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

来源:互联网 发布:splice js参数 编辑:程序博客网 时间:2024/05/21 23:34

创建一个函数,使得输入的函数能具有柯里化的功能。

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方法,传参数。


这个理解起来会有点难,建议使用谷歌浏览器的断点调试来看一下具体的过程~~


阅读全文
0 0