柯理化函數(shù)編程思想
1.執(zhí)行一個(gè)方法责嚷,傳遞一些參數(shù)進(jìn)去,首先形成一個(gè)不銷(xiāo)毀的棧蜓斧,把傳遞的這些值存儲(chǔ)起來(lái)(沒(méi)有立即使用魁莉,屬于預(yù)先存儲(chǔ))
2.返回一個(gè)小函數(shù)給棧外面
3.當(dāng)執(zhí)行返回的小函數(shù)式,把之前第一步預(yù)先存儲(chǔ)的信息拿過(guò)來(lái)使用(作用域鏈舱权,閉包等機(jī)制完成)
我們把JS中基于閉包實(shí)現(xiàn)的預(yù)先存儲(chǔ)的思想叫做“課理化函數(shù)思想”
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);