前端柯力化先举一个简单的🌰
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);
}
}
}
网友评论