用(function(){...})包装文件。调用(this)与简单调用()

时间:2012-07-20 22:57:08

标签: javascript

backbone.js源代码使用这样的函数包装器:

(function(){
    ...
}).call(this);

http://backbonejs.org/docs/backbone.html#section-185

更常见的是,我看到以下用过:

(function(){
    ...
})();

这两者的行为何时不同?我的印象是它们是等价的,但我认为必须有区别,因为Backbone使用.call(this)而不是更短的替代方案。

2 个答案:

答案 0 :(得分:8)

在第一个示例中,函数内部的this将是来自调用范围的this

在第二个示例中,this将为window

(正如ŠimeVidas所说,它是严格模式的undefined,而不是window。)

答案 1 :(得分:4)

第一个this与函数调用时的函数相同,对于第二个,它将引用窗口对象。