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

Sop*_*ert 7 javascript

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

(function(){
    ...
}).call(this);
Run Code Online (Sandbox Code Playgroud)

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

更常见的是,我已经看到使用以下内容:

(function(){
    ...
})();
Run Code Online (Sandbox Code Playgroud)

这两者的行为何时不同?我的印象是他们是等价的,但我认为必须有一个区别,因为Backbone使用.call(this)而不是更短的选择.

Cor*_*bin 8

在第一个例子中,this函数内部将this来自调用范围.

在第二个例子中,this将是window.

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