函数柯里化使用的场景有:
- 参数复用
- 延时执行
- 提前确认
函数柯里化的核心在于:函数里面返回函数,从而做到参数复用的目的。
例子:实现一个函数,满足以下几个要求:
add(1)(2)(4)//输出7
add(1,2)(4)//输出7
牛客
JS62题 柯里化
题目:
示例输入:
题解:
function curryIt(fn) {
//获取fn参数的数量
var n = fn.length;
//声明一个数组args
var args = [];
//返回一个匿名函数
return function(arg){
//将curryIt后面括号中的参数放入数组
args.push(arg);
//如果args中的参数个数小于fn函数的参数个数,
//则执行arguments.callee(其作用是引用当前正在执行的函数,这里是返回的当前匿名函数)。
//否则,返回fn的调用结果
if(args.length < n){
return arguments.callee;
}else return fn.apply("",args);
}
}