Skip to content

compose函数

compose函数:通常用于函数式编程中,它接受一系列函数作为参数,并返回一个新的函数,该新函数将按照给定的顺序(从左往右,或者从右往左)依次执行这些函数。

compose函数与pipe

js
// compose函数
function compose(...args) {
    return (val) => args.reduceRight((acc, cur) => {
        val = cur(val)
        return val
    },val)
}

let fn1 = val => val + 1;
let fn2 = val => val + 2;
let fn3 = val => val + 3;
let fn4 = val => val + 4;

console.log(compose(fn1,fn2,fn3,fn4)(10)) // 10 + 4 + 3 + 2 + 1
// compose函数
function compose(...args) {
    return (val) => args.reduceRight((acc, cur) => {
        val = cur(val)
        return val
    },val)
}

let fn1 = val => val + 1;
let fn2 = val => val + 2;
let fn3 = val => val + 3;
let fn4 = val => val + 4;

console.log(compose(fn1,fn2,fn3,fn4)(10)) // 10 + 4 + 3 + 2 + 1

这里 reduceRight 的顺序是 从右往左,所有函数执行的顺序是 f4 → f3 → f2 → f1

pipe(管道函数)的顺序是 f1 → f2 → f3 → f4,内部实现可以用 reduce