面试题答案
一键面试function compose(...funcs) {
return function (arg) {
return funcs.reduceRight((acc, func) => {
return func(acc);
}, arg);
};
}
实现过程中对函数定义与调用方式的理解和应用
- 函数定义:
compose
函数使用了 ES6 的剩余参数语法...funcs
,它可以将所有传入的函数收集到一个数组funcs
中。- 然后返回一个匿名函数,这个匿名函数接受一个参数
arg
,这是整个函数链开始执行的初始值。
- 函数调用:
- 使用
reduceRight
方法,它会从数组的最后一个元素开始,到第一个元素结束依次对数组中的元素执行一个累加器函数。 - 累加器函数接受两个参数:
acc
(累加器累计回调的返回值)和func
(当前数组元素,即当前要执行的函数)。 - 在每次迭代中,
func
函数会被调用,并将acc
作为参数传入,其返回值会作为下一次迭代的acc
。 - 最终
reduceRight
会返回整个函数链执行后的结果。这样就实现了从右到左依次调用传入的函数,并将前一个函数的返回值作为下一个函数的参数。
- 使用