已知参数个数的函数,如何实现柯里化?
2017-10-29 10:18
302 查看
创建一个函数,使得输入的函数能具有柯里化的功能。
下面是使用方法:
原理:
1、判断输入函数有几个参数。(这里假定有4个参数)
2、检验有没有收集齐4个参数,没有收集齐,递归调用,重新收集,收集齐了,就利用apply方法,传参数。
这个理解起来会有点难,建议使用谷歌浏览器的断点调试来看一下具体的过程~~
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方法,传参数。
这个理解起来会有点难,建议使用谷歌浏览器的断点调试来看一下具体的过程~~
相关文章推荐
- 未知参数个数的函数,如何实现柯里化?
- js中方法重载如何实现?以及函数的参数问题
- JavaScript中如何实现函数参数可变
- 一个类如何实现两个接口中同名同参数不同返回值的函数
- 在js中如何实现方法重载?以及函数的参数问题
- 如何实现可变参数函数
- 如何实现VBA中函数的可变参数传递
- printf函数可变参数是如何实现的?
- 如何实现可变参数函数
- lua脚本语言的学习-----------------如何实现c++无参数的函数在lua中调用
- 如何实现参数个数可变的函数
- 如何实现函数来处理可变参数
- 如何实现参数个数可变的函数
- 一个类如何实现两个接口中同名同参数不同返回值的函数
- Delphi与VC如何实现变参函数,类似Format、sprintf的变长参数实现原理,va_list与Array of const
- Matlab的函数中如何实现按引用传递参数
- [置顶] 在js中如何实现方法重载?以及函数的参数问题
- 如何实现类似printf( const char *format [, argument]... )这种参数不固定的函数
- 详解如何实现定义一个参数个数可变的函数
- js中方法重载如何实现?以及函数的参数问题