定义
柯里化,也称为局部套用,是把多参函数转换为一系列单参函数并进行调用的技术。
add(4,5)=>add(4)(5)
作用
降低通用性、提高适用性
编码中表现形式为 参数复用、提前返回、延时执行
编写一个curry
function curry(fun,args){
var length=fun.length; // 函数fun的参数个数
args=args||[]; // 首次调用赋值 args=[]
return function(){
// 获取参数arhuments
var _args = [].slice.apply(arguments) // arguments不是数组,在此转化为数组
_args=_args.concat(args)
// 判断是否达到参数个数
if(_args.length<length){
return curry.call(this,fun,_args) // 未达到则继续回调
}else{
return fun.apply(this,_args) // 满足个数执行
}
}
}
示例
function add(a,b,c){
return a+b+c
}
var addc=curry(add)
console.log(addc)
console.log(addc(3)(4)(5)) // 12
console.log(addc(3,4)(5)) // 12
console.log(addc(3)(4,5)) // 12
console.log(addc(3,4,5)) // 12