鍍金池/ 問答/HTML/ es6 雙箭頭函數(shù)調(diào)用有什么意義?

es6 雙箭頭函數(shù)調(diào)用有什么意義?

let getters = {
    total: (state) => (symbol) => {
        return (symbol || '$') + state.count;
    }
}

網(wǎng)上看到這么一段代碼,不理解 為什么箭頭函數(shù)后邊要跟一個箭頭函數(shù),一開始以為是一個箭頭函數(shù)傳兩個參數(shù)的特殊寫法,試了試發(fā)現(xiàn)

getters.total(state, symbol)  // 調(diào)用不了
getters.total(state)(symbol)  //調(diào)用成功

不知道這樣寫有什么玄機(jī)?

回答
編輯回答
卟乖

let after1 ={
getter:function (state) {

  return function (symbol) {
      return (symbol || "$") + state.count;
  }

}
};

2018年7月5日 23:24
編輯回答
離觴

雙箭頭函數(shù)本身沒有context. this指向定義時所處的context.

2017年9月17日 09:44
編輯回答
枕邊人

這段代碼相當(dāng)于:

let getters = {
    total: function(state) {
         return function(symbol) => {
            return (symbol || '$') + state.count;
        }
    }
}

至于為什么這么寫,你需要了解一個概念:函數(shù)柯里化

如果你不了解函數(shù)柯里化,那你完全可以在定義的時候定義為:

let getters = {
    total: (state, symbol) => {
        return (symbol || '$') + state.count;
    }
}

而要完全理解函數(shù)柯里化帶來的好處,你可能還要去學(xué)習(xí)函數(shù)式編程

2018年9月7日 03:39
編輯回答
愚念
let getters = {
    total: (state) => (symbol) => {
        return (symbol || '$') + state.count;
    }
}

其實(shí)就是

let getters = {
    total: (state) => {
        return (symbol) => {
                    return (symbol || '$') + state.count;
                }
    }
}

第一個參數(shù)是state的函數(shù)調(diào)用后會返回一個函數(shù)(就是參數(shù)是symbol的這個函數(shù)),所以你連續(xù)調(diào)用可以成功
箭頭函數(shù)在不寫{} 的情況下,可以省略return關(guān)鍵字,而默認(rèn)return接下來的東西

2017年1月28日 11:55