柯里化处理函数
function currying(fn) {
var store_arg = Array.prototype.slice.call(arguments, 1);//取出参数
return function() {
var new_arg = Array.prototype.slice.call(arguments, 0),
args = store_arg.concat(new_arg);
return fn.apply(null,args);
}
}
柯里化的使用
function add(a, b, c, d) {
return a + b + c + d;
}
var addTwo = currying(add, 2);
typeof addTwo; //'function'
addTwo(3, 2, 1); //8
使用场景
多次调用同一个函数,且大多数参数都是固定的