之间是否存在差异:
(function(){
}).call(this);
和
(function(){
})();
或
var MODULE = {};
(function(){
this.hello = 'world'
}).call(MODULE);
和
var MODULE = {};
(function(m){
m.hello = 'world'
})(MODULE);
我经常在编译的javascript中看到第一个案例。他们都会创建一个范围并做好他们的命名工作。
是否存在任何差异,或仅仅是品味问题。
编辑:为什么编译的javascript会使用IIFE调用?
答案 0 :(得分:7)
(function(){
}).call(this);
调用匿名函数,其中函数内的this
将在调用时指向this
引用的对象。
(function(){
})();
调用匿名函数,其中函数内的this
将指向全局对象(或在严格模式下未定义)
演示:Fiddle