function compose(...funcs) {
if (funcs.length === 0) {
return arg => arg
}
if (funcs.length === 1) {
return funcs[0]
}
return funcs.reduce((a, b) => (...args) => a(b(...args)))
}
import { compose } 'redux';
// function f
const f = (arg) => `函数f(${arg})`
// function g
const g = (arg) => `函数g(${arg})`
// function h 最后一个函数可以接受多个参数
const h = (...arg) => `函数h(${arg.join('_')})`
console.log(compose(f,g,h)('a', 'b', 'c')) //函数f(函数g(函数h(a_b_c)))