咖喱函数中使用null进行调用的目的(JavaScript实现)

时间:2019-07-14 17:04:06

标签: javascript currying

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中将nullthis一起用作fn.call的目的是什么?不仅fn(...args)有用吗?我确实尝试了一些例子,并得到了相同的结果。

1 个答案:

答案 0 :(得分:1)

是的,它将正常工作。 (微小的区别是它为undefined上下文传递了null而不是this。)

那为什么作者使用.call(null, …)?可能是因为它很好地反映了.bind(null, …)调用。