函数柯力化

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

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容