在curry
函数here的以下实现中:
// curry :: ((a, b, ...) -> c) -> a -> b -> ... -> c
function curry(fn) {
const arity = fn.length;
return function $curry(...args) {
if (args.length < arity) {
return $curry.bind(null, ...args);
}
return fn.call(null, ...args);
};
}
在call
中将null
与this
一起用作fn.call
的目的是什么?不仅fn(...args)
有用吗?我确实尝试了一些例子,并得到了相同的结果。
答案 0 :(得分:1)
是的,它将正常工作。 (微小的区别是它为undefined
上下文传递了null
而不是this
。)
那为什么作者使用.call(null, …)
?可能是因为它很好地反映了.bind(null, …)
调用。