柯里化
柯里化,可以理解为提前接收部分参数,延迟执行,不立即输出结果,而是返回一个接 受剩余参数的函数。因为这样的特性,也被称为部分计算函数。柯里化,是一个<b 逐 步接收参数的过程。
概念先不管,下面是一道 js 题目,实现一个add(a)(b)(c)>>>
函数:
function currying(fn) {
var allArgs = []
return function next() {
var args = [].slice.call(arguments)
if (args.length > 0) {
allArgs = allArgs.concat(args)
return next
} else {
return fn.apply(null, allArgs)
}
}
}
var add = currying(function () {
var sum = 0
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i]
}
return sum
})
add(3)(4) // result 7
add(3, 4) //7
var newAdd = add(5)
newAdd(8) //13
add
函数将多个值降解为单个值的模式。只传递给函数一部分参数来调用它,让它返回一
个函数去处理剩下的参数。