函数式编程之curry化
其目的是将function(arg1, arg2, arg3, ...)
多参数转为function(arg1)(arg2)(arg3)...
单参数形式
es5版
function curry(fn) {
var args = [],
n = fn.length; // 传入的函数的参数个数
return function core() {
var arg = [].slice.call(arguments); // 将函数参数转为数组
args = args.concat(arg);
n -= arg.length;
return n === 0 ? fn.apply(null, args) : core;
}
}
使用如下
var add = curry(function (a, b, c, d) {
return a + b + c + d;
});
console.log(add(1, 2)(2)(3));
网友评论