就是传入多个函数作为参数,将前面函数执行后的返回值传给下一个函数,依次调用
const compose = (...func) => {
if (func.length === 0) {
// 直接返回参数
return arg => arg
}
if (func.length === 1) {
return func[0]
}
return func.reduce((a, b) => (...args) => a(b(...args)))
}
const add = arg => arg + 1;
const sum = arg => arg + 1;
const plus = arg => arg + 1;
const num = compose(add, sum, plus)(1); // add(sum(plus(1)))
console.log(num);
let num2 = compose()(2)
console.log(num2);