es5实现
const compose = function (func) {
let len = func.length;
let count = len - 1;
let result;
return function f1(...arg1) {
result = func[count].apply(this, arg1);
if (count <= 0) {
count = len - 1;
return result;
}
count--;
return f1.call(null, result);
};
};
redux实现
const reduxCompose = (func) => {
const len = func.length;
if (len === 0) {
return (arg) => arg;
}
if (len === 1) {
return func[0];
}
return func.reduce((a, b) => (...args) => a(b(...args)));
};