将`undefined`传递给bind()是什么意思?

Bee*_*and 10 javascript bind

我正在阅读有关bind()javascript函数的一些文档.

其中一个例子开头是这样的:

function list() {
  return Array.prototype.slice.call(arguments);
}

var list1 = list(1, 2, 3); // [1, 2, 3]

//  Create a function with a preset leading argument
var leadingZeroList = list.bind(undefined, 37);

var list2 = leadingZeroList(); // [37]
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

究竟是什么意思传递(undefined, 37)bind()这里?

Poi*_*nty 15

这意味着您不希望this在结果绑定函数中引用任何内容.换句话说,它确保当你调用绑定函数时,this将会undefined.究竟为什么你这样做当然取决于代码; 许多功能都不使用,this所以它是一种整洁的方式.

请注意,在非严格模式,它可以是运行时将替代全局对象(的情况下window可在浏览器)undefined,但我找不到任何规范,规定该行为.在严格模式下,不执行这样的替换.

  • @BeeBand yes - `bind()`的第一个参数是你希望在调用结果函数时将`this`设置为的值.后续参数在调用点传递的任何其他参数之前传递. (3认同)