实现一个 compose 函数。
compose是函数式编程中使用较多的一种写法, 它把逻辑解耦在各个函数中,通过compose的方式组合函数, 将外部数据依次通过各个函数的加工,生成结果。
function compose(...fn) {
if (!fn.length) return (v) => v;
if (fn.length === 1) return fn[0];
return fn.reduce(
(pre, cur) =>
(...args) => {
return pre(cur(...args))
}
);
}
// 用法如下:
function fnone(x) {
return x / 3;
}
function fntwo(x) {
return x * 6;
}
function fnthree(x) {
return x - 1;
}
function fnfour(x) {
return x + 2;
}
const a = compose(fnone, fntwo, fnthree, fnfour);
console.log('aaaaaaaaaaaaaaaaaaaaaaaaaa',a(1)); // 1+2-1*6/3=4