
/**
* @param {Function[]} functions
* @return {Function}
*/
var compose = function(functions) {
return function(x) {
return functions.reduceRight((result, func) => func(result), x);
}
};
/**
* const fn = compose([x => x + 1, x => 2 * x])
* fn(4) // 9
*/
说明:
-
reduceRight的第一次迭代:func是数组中的最后一个函数x => 2 * x。result初始值是4(传入fn的参数)。func(result)即执行x => 2 * x函数,得到2 * 4 = 8,这个值成为下一次迭代的result。
-
reduceRight的第二次迭代:func是数组中的第一个函数x => x + 1。result是上一次迭代的结果8。func(result)即执行x => x + 1函数,得到8 + 1 = 9。
最终,fn(4) 的调用输出 9,这是因为整个 compose 函数依次执行了数组中的函数,并将结果传递给下一个函数。

本文介绍了JavaScript中的compose函数,它利用reduceRight方法将一系列函数串联起来,通过示例展示了如何使用compose函数实现函数的级联执行,如fn(4)输出9的过程。
498

被折叠的 条评论
为什么被折叠?



