这一题要求实现一个Compose
函数,属于高阶函数中的一种应用,比它更复杂一些的就是函数柯里化啦~
要求
- 第一次调用时接收的是一个函数数组
- 返回一个新的函数,并且这个函数就是函数数组的复合函数
/**
* const fn = compose([x => x + 1, x => 2 * x])
* fn(4) // 9
*/
题解
这里不使用Reduce方法,采用原始循环来解
var compose = function (functions) {
return function (x) {
for (let i = functions.length - 1; i >= 0; i--) {
x = functions[i](x);
}
return x;
};
};