Javascript lodash flow函数的作用是什么?
我正在阅读一些使用lodash中的u.flow()的代码,文档中的解释对我来说毫无意义 医生说 创建一个函数,该函数返回调用给定 具有已创建函数的此绑定的函数,其中 后续调用将提供上一个调用的返回值 举个例子:Javascript lodash flow函数的作用是什么?,javascript,lodash,Javascript,Lodash,我正在阅读一些使用lodash中的u.flow()的代码,文档中的解释对我来说毫无意义 医生说 创建一个函数,该函数返回调用给定 具有已创建函数的此绑定的函数,其中 后续调用将提供上一个调用的返回值 举个例子: function square(n) { return n * n; } var addSquare = _.flow([_.add, square]); addSquare(1, 2); // => 9 我已经读了好几遍了,我不知道它是什么意思,也不知道该函数如何返回9。
function square(n) {
return n * n;
}
var addSquare = _.flow([_.add, square]);
addSquare(1, 2);
// => 9
我已经读了好几遍了,我不知道它是什么意思,也不知道该函数如何返回9。我能想到的最接近的方法是折叠函数式编程,但这看起来不像那样。是否有其他方法可以解释流的作用?用更简单的术语重新编写文档中的定义:它按顺序调用数组中的方法。它使用每个函数的结果作为下一个函数的参数。在给出的示例中,步骤如下:
。添加(1,2)
,返回3
square(3)
。这将返回9
以下是此功能代码的相关部分:
return function(...args) {
let index = 0
let result = length ? funcs[index].apply(this, args) : args[0]
while (++index < length) {
result = funcs[index].call(this, result)
}
return result
}
返回函数(…args){
设指数=0
让结果=长度?funcs[index]。应用(此,args):args[0]
而(++索引<长度){
结果=funcs[index]。调用(此,结果)
}
返回结果
}
因此它首先将第一个函数应用于输入参数;然后调用其余函数,每个函数都使用前一阶段的结果
这样做我可以看到以下好处:
-如果需要,所有应用函数都将使用调用者的此
参数。
-根据定义,它只返回一个函数。这允许延迟评估。可以传递流函数。实际计算只有在应用到参数时才会发生。它似乎在做:
(1+2)^2=9
。啊,那么它只是函数应用吗?是的,它基本上只是对任意数量的函数执行x(y(z))