es6 双箭头函数调用有什么意义?

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

网上看到这么一段代码,不理解 为什么箭头函数后边要跟一个箭头函数,一开始以为是一个箭头函数传两个参数的特殊写法,试了试发现

getters.total(state, symbol)  // 调用不了
getters.total(state)(symbol)  //调用成功

不知道这样写有什么玄机?

阅读 4.2k
评论
    4 个回答
    • 537

    这段代码相当于:

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

    至于为什么这么写,你需要了解一个概念:函数柯里化

    如果你不了解函数柯里化,那你完全可以在定义的时候定义为:

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

    而要完全理解函数柯里化带来的好处,你可能还要去学习函数式编程

      相似问题
      推荐文章