Appearance
组合函数: 在柯里化函数的基础上的一个特殊应用场景 执行compose预先把要执行的函数顺序处理好,返回一个处理函数operate 当把处理函数operate执行时,传递的实参为初始值,按照事先处理好的函数执行顺序,依次执行
js
const add1 = x => x + 1
const mul3 = x => x * 3
const div2 = x => x / 2
// 给你一个初始值y = 0,输出((y + 1) * 3) / 2的结果需要=> div2(mul3(add1(0)))
// 使用compose函数把div2(mul3(add1(0)))变成compose(div2, mul3, add1)(x)的形式,变得扁平化一些
function compose () {
const args = Array.from(arguments)
return function operate (x) {
if (args.length === 0) {
return x
}
return args.reduceRight((acc, fn) => {
return fn(acc)
}, x)
}
}
let operate = compose(div2, mul3, add1)
console.log(operate(0))