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