柯里化-应用-金额总数计算
柯里化函数主要用来:当有参数时,存储每次设置的值;当无参数时,调用操作函数来计算总金额;闭包存储一个临时对象,最后调用函数处理该临时对象。
// 严格模式下写法
'stick'
let curry = function(fn) {
let args = []
return function innerFn(...params){
if(params.length) {
[].push.apply(args, params)
return innerFn // 返回函数调式调用
} else {
return fn.apply(null, args)
}
}
}
let costFn = (function() {
let sum = 0
return function(...params) {
for(let i = 0, l = params.length; i < l; i++) {
sum += params[i]
}
return sum
}
})()
let cost = curry(costFn)
// cost(100)
// cost(200)
// cost(300)
cost(100)(200)(300)
console.log(cost())