//核心概念:把一个fn(a) 多参的函数 转化为一个 单参的函数 叫做柯里化函数
//目的:为了缩小适用范围,创建一个针对性更强的函数
//优点:可复用性,延迟计算
=================================================================================
例子:
//做一个可以累加的函数
function add() {
let res = 0;
for (var i = 0; i < arguments.length; i++) {
res+=arguments[i]
}
return res
}
//curry函数
function curry(fn,minArg){
if (minArg === undefined) minArg = 1
function f(fArg){
return function (){
var arg = [].slice.call(arguments)
var newArg = fArg.concat(arg)
if(newArg.length >=minArg){
return fn.apply(null,newArg)
}else{
return f(newArg)
}
}
}
return f([])
}
//测试
const fn = curry(add,5)
const f = fn(1)()(3) //输出函数
console.log(f(4)(5)()(6)) //19