JavaScript 绑定、应用和 `this` 指针

JavaScript Bind, Apply, and the `this` pointer

我对 JS bindapplythis 有点困惑。

问题

function curry(fn) {
  // your code here
  return function curryInner(...args) {
    if (args.length >= fn.length) return fn.apply(this, args);
    return curryInner.bind(this, ...args);  //change this to null, still pass the test
  };
  
}
const join = (a, b, c) => {
   return `${a}_${b}_${c}`
}

const curriedJoin = curry(join)

console.log(curriedJoin(1, 2, 3)) // '1_2_3'

不,this 指向它所在函数的 this 上下文。

在这种情况下,你放在那里真的无关紧要,因为调用 bind 的唯一目的是创建一个已经设置了 args 的函数副本。

return curryInner.bind(null, ...args)

基本上可以替换为

return function() {
  return curryInner(args);
}