您的位置:首页 > 其它

已知参数个数的函数,如何实现柯里化?

2017-10-29 10:18 302 查看
创建一个函数,使得输入的函数能具有柯里化的功能。

function curry(fn){
var len=fn.length;
var arg=Array.prototype.slice.call(arguments,1);
return function(){
var args=arg.concat(Array.prototype.slice.call(arguments));
if(args.length<len){
return curry.call(null,fn,...args);
}else{
console.log(args);
return fn.apply(null,args);
}
}
}


下面是使用方法:

curry(add,4)(4,5)(6)//输出19


原理:

1、判断输入函数有几个参数。(这里假定有4个参数)

2、检验有没有收集齐4个参数,没有收集齐,递归调用,重新收集,收集齐了,就利用apply方法,传参数。

这个理解起来会有点难,建议使用谷歌浏览器的断点调试来看一下具体的过程~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数柯里化