【发布时间】:2010-12-09 04:08:34
【问题描述】:
我已经以这种方式实现了curry 函数:
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 不是预期的输出吗?我的代码有什么问题?
注意:在add 函数日志1 10 中使用console.log(x, y)。我不明白为什么它返回undefined。
【问题讨论】:
-
其实不是咖喱,是偏应用。
-
我知道我正在恢复一个非常古老的线程,但是将
[1]作为arguments的参数应用有什么作用呢? -
它从参数列表中删除传递的函数!
标签: javascript partial-application