这是我自己写的
function add(a, b) {
return a + b;
}
// 假设有一个 curry 函数可以做到柯里化
function curry(fn) {
return function (a) {
return function (b) {
return fn(a, b)
}
}
}
var addCurry = curry(add);
console.log(addCurry(1))
console.log(addCurry(1)(2))
addCurry(1)(2) // 3
他们是这么写的,这个难点在于一开始的函数参数个数是不确定的,所以只能用arguments来截取这样子
var curry = function (fn) {
var args = [].slice.call(arguments, 1);
return function() {
var newArgs = args.concat([].slice.call(arguments));
return fn.apply(this, newArgs);
};
};
网友评论