2020-01-20
描述
对集合中的函数从右到左依次执行。
提示
- 使用
Array.prototype.reduce()
从右到左依次执行集合中的函数 - 最后一个(最右边)的函数可以接受一个或者多个参数
- 剩余的函数只能接受上一个函数的执行的结果作为参数
代码
const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args)));
示例
先乘再加:
const add5 = x => x + 5;
const multiply = (x, y) => x * y;
const multiplyAndAdd5 = compose(
add5,
multiply
);
multiplyAndAdd5(5, 2); // 15