假如有函数
[f1, f2, f3, f4]
f1(f2(f3(f4(x))))
function compose(...funcs) { if(funcs.length === 0) { return args => args; } return funcs.reduce((acc, current) => { return (...args) => acc(current(...args)); });}
f4(f3(f2(f1(x))))
function compose(...funcs) { if(funcs.length === 0) { return args => args; } return funcs.reduce((acc, current) => { return (...args) => current(acc(...args)); });}
经典题型测试
function add(a, b = 1) { return a + b; } function square(a) { return a*a;} function plusOne(a) { return a + 1;} function compose(...funcs) { if(funcs.length === 0) { return args => args; } return funcs.reduce((acc, current) => { return (...args) => acc(current(...args)); });} var addSquareAndPlusOne = compose(add, square, plusOne); addSquareAndPlusOne(1, 2);