假设我们现在有一个方法add,参数需要a和b,目前只有参数a,那我们构想,能否先在a存起来 待b出现了我们再放b上去并执行方法?
这是今天的业务场景描述 下面开始:
// 材料函数
function add(a,b) {
return a+b
}
//curry化的方法函数
function curry(fn){
var args = Array.prototype.slice.call(arguments,1); //arguments不是真正意义的数组 需要借用数组方法转换成数组
return function(){
var args2 = Array.prototype.slice.call(arguments);//这里的arguments指的是当前函数的作用的arguments
var argsList = args.concat(args2);
return fn.apply(null, argsList);//这里没有指定函数指针 因此this默认指向全局window
}
}
var addFn = curry(add, 1);//我们利用闭包时传入的函数和 argument,得以保存下来 现在我们传入 a值 并不知道 b值
//。。几千年后 我们终于得到b值 好了 结果要产生了 真兴奋
addFn(2);
//ok 我们终于得到我们想要的效果
来源:https://www.cnblogs.com/chaky/p/8179644.html