10

我正在阅读一些关于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]

所以我的问题是:

(undefined, 37)传到这里到底是什么意思bind()

4

2 回答 2

16

这意味着您不想this在生成的绑定函数中引用任何内容。换句话说,它确保当您调用绑定函数时,this将是undefined. 您为什么要这样做当然取决于代码。许多功能不使用this,所以这是一种整洁的方式。

请注意,在非严格模式下,运行时可能会用全局对象(window在浏览器中)替换undefined,但我找不到规定该行为的规范。在严格模式下,不执行此类替换。

于 2013-01-17T15:45:27.113 回答
3

第一个参数bind指定this函数内部的值。它可用于将其转换为作用于对象的“方法”。但是,如果你通过undefined它意味着它仍然是一个函数。因此,在您上面提到的示例中,没有区别。

于 2013-01-17T15:46:15.573 回答