柯理化函数编程思想
1.执行一个方法,传递一些参数进去,首先形成一个不销毁的栈,把传递的这些值存储起来(没有立即使用,属于预先存储)
2.返回一个小函数给栈外面
3.当执行返回的小函数式,把之前第一步预先存储的信息拿过来使用(作用域链,闭包等机制完成)
我们把JS中基于闭包实现的预先存储的思想叫做“课理化函数思想”
let a = i => i+1,
b = i => i*2,
c = i => i+3,
d = i => i/2;
const conpose = (...ary) =>{
return val => {
ary.forEach(item => {
val = item(val);
})
return val
}
}
let fn = conpose(a,b,c,d);
fn(3);