函数柯力化

2017-12-29  本文已影响49人  juceyjing

前端柯力化先举一个简单的🌰
function sum(a) {
if (arguments > 1) {
return arguments[0] + arguments[1];
}else{
var a=arguments[0];
return function(b){
return a+b;
}
}
}

当传入n个参数时,必须对函数进行扩展
function curry(fn,argLen,currArgs){
return function(){
var args=[].slice.call(arguments);
// 首次调用时未提供最后一个参数
if(currArgs!==undefined){
args = args.concat(currArgs);//拼接完成后的参数
}
// 递归出口
if (args.length == argLen) {//没有柯力化的情况下
return fn.apply(this, args);
} else {//拼接的参数不等于现在的参数
return curry(fn, argLen, args);
}
}

}
上一篇 下一篇

猜你喜欢

热点阅读