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

时间:2013-01-17 15:41:54

标签: javascript bind

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

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

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()究竟意味着什么?

2 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:3)

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