2019-02-17
提问
创建一个 pipe
函数,使其通过返回带有一个参数的函数来从左到右依次执行传入的函数
const square = v => v * v
const double = v => v * 2
const addOne = v => v + 1
const res = pipe(square, double, addOne)
res(3) // 19; addOne(double(square(3)))
回答
首先使用展开运算符 ...
让提供的所有参数转换成为一个数组,然后再实现返回的一元函数。在一元函数中通过使用 Array.prototype.reduce()
来运行传入的函数并存储计算结果便可获得最终的计算结果。
const pipe = (...fns) => x => fns.reduce((v, fn) => fn(v), x)
加分回答
- 复合函数是组合两个或两个以上的函数并产生一个新函数的过程。
- 什么是函数式编程?