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)而不是更短的选择.
在第一个例子中,this函数内部将this来自调用范围.
在第二个例子中,this将是window.
(正如ŠimeVidas所说,它是undefined严格模式,而不是window.)