CNode

关于es6入门中的一段‘嵌套的箭头函数 ’代码,不理解,求解释

问答
Wwebcainiao发布于9 年前最后回复9 年前4 回复5150 浏览0 收藏
const pipeline = (...funcs) =>
  val => funcs.reduce((a, b) => b(a), val);

const plus1 = a => a + 1;
const mult2 = a => a * 2;
const addThenMult = pipeline(plus1, mult2);

addThenMult(5)

pipeline函数里的a,b不是应该为函数么,[puls1,mult2]对应funcs,那b(a)怎么理解呀,a,b的值到底是什么呀,想不通,求解释

查看回复

回复 (4)

F
Fov6363#1·9 年前

做了下测试,想通了..... 上面那个箭头函数等价于

const pipeline = function (...funcs) {

return function (val) {
    return funcs.reduce((a,b) => {
        return b(a);

    },val)
}

}; 其中那个val,是reduce的方法的initialValue值,所以第一次运行时,a = 5,b = [function: plus1],第二次运行a = 6,b = [function: mult2],最后结果为12

J
jiangli373#2·9 年前

b是mult2 a是plus1

T
Telanx#3·9 年前

其实就是从左到右的函数组合,用fold-right可以实现compose(从右到左),没记错的话ramda.js里关于pipline实现大致就是这样的 参见 https://cnodejs.org/topic/591162809e32cc84569a6cbd#5913fc439e32cc84569a6da3

参与回复
登录后即可参与回复。登录