lodash流函数有什么作用?

时间:2018-11-28 00:07:21

标签: javascript lodash

我正在从lodash中读取一些使用_.flow()的代码,而文档中的解释对我来说却没有任何意义。

医生说

  

创建一个函数,该函数返回调用给定结果的结果   函数与已创建函数的this绑定,其中每个   连续调用将提供前一个的返回值。

以示例为例:

function square(n) {
  return n * n;
}

var addSquare = _.flow([_.add, square]);
addSquare(1, 2);
// => 9

我已经读过几次了,我无法弄清楚它的含义或该函数如何返回9。我能想到的最接近的想法是在函数式编程中折叠起来,但这看起来并非如此。有什么其他方法可以解释流量的变化吗?

2 个答案:

答案 0 :(得分:3)

用更简单的术语重新定义来自文档的定义:它依次调用数组中的方法。它使用每个函数的结果作为下一个函数的参数。对于给出的示例,步骤如下:

  1. 调用_.add(1, 2),并返回3
  2. 将该返回值作为参数传递给数组中的下一个函数,该函数变为square(3)。这将返回9

答案 1 :(得分:2)

以下是此功能的source代码的相关部分:

features

因此,它首先将第一个函数应用于输入参数;然后调用其余函数,每个函数占用上一阶段的结果。

通过这种方式,我可以看到以下好处: -如果需要,所有应用的函数将使用调用者的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 } 参数。 -根据定义,它只返回一个函数。这样可以进行延迟评估。流功能可以传递。实际的计算仅在应用于参数时才会进行。