我實現了一個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