我正在阅读有关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()
究竟意味着什么?
答案 0 :(得分:15)
这意味着您不希望this
引用结果绑定函数中的任何内容。换句话说,它确保当您调用绑定函数时,this
将为undefined
。究竟为什么你这样做当然取决于代码;很多函数都不使用this
所以这是一种整洁的方式。
请注意,在非严格模式下,可能是运行时将window
替换全局对象(浏览器中为undefined
)的情况,但是我找不到规定这种行为的规范。在严格模式下,不执行此类替换。
答案 1 :(得分:3)
bind
的第一个参数指定函数内的this
值。它可以用于将其转换为作用于对象的“方法”。但是,如果您通过undefined
,则表示它仍然是一个函数。所以在上面提到的例子中没有区别。