我实现了一个curry
功能是这样的:的JavaScript功能咖喱
function curry (fn) {
var slice = Array.prototype.slice,
args = slice.apply(arguments, [1]);
return function() {
fn.apply(null, args.concat(slice.apply(arguments)));
};
}
当我使用上述功能做以下
function add (x, y) {
return x + y;
}
var inc = curry(add, 1);
console.log(inc(10));
它记录undefined
。预期产量是不是11?我的代码有什么问题?
注:使用console.log(x, y)
里面的add
功能日志1 10
。我不明白它为什么会返回undefined
。
其实不是咖喱,它是部分应用。 – jcubic 2013-09-20 19:55:19
我知道我正在恢复一个非常旧的线程,但是将`[1]`作为参数应用于`arguments`是做什么的? – 2013-12-31 14:54:19
它从参数列表中删除传递的函数! – monoceres 2014-02-26 15:01:29