/*--------------------------------------- pipe/compose ------------------------------------------*/
//pipe函数作用
//pipe函数接受任意数量的函数作为参数,然后返回一个新函数,这个新函数会依次执行每一个参数函数,并将前一个函数的返回值传递给下一个函数。
//compose函数作用
//compose函数接受任意数量的函数作为参数,然后返回一个新函数,这个新函数会依次执行每一个参数函数,但是是从右往左执行。

//pipe函数
const pipe =
(...fns) =>
(x) =>
fns.reduce((v, f) => f(v), x);
//compose函数
const compose =
(...fns) =>
(x) =>
fns.reduceRight((v, f) => f(v), x);
const add = (x) => x + 1;
const multiply = (x) => x * 2;
const subtract = (x) => x - 3;
const divide = (x) => x / 4;
const addThenMultiply = pipe(add, multiply);
const subtractThenDivide = compose(subtract, divide);
console.log(addThenMultiply(1)); // 4
console.log(subtractThenDivide(1)); // -2.75
展开
评论