IIFE和电话之间的区别

时间:2013-07-12 02:40:19

标签: javascript namespaces scope

之间是否存在差异:

(function(){

}).call(this);

(function(){

})();

var MODULE = {};
(function(){
    this.hello = 'world'
}).call(MODULE);

var MODULE = {};
(function(m){
    m.hello = 'world'
})(MODULE);

我经常在编译的javascript中看到第一个案例。他们都会创建一个范围并做好他们的命名工作。

是否存在任何差异,或仅仅是品味问题。

编辑:为什么编译的javascript会使用IIFE调用?

1 个答案:

答案 0 :(得分:7)

(function(){

}).call(this);

调用匿名函数,其中函数内的this将在调用时指向this引用的对象。

(function(){

})();

调用匿名函数,其中函数内的this将指向全局对象(或在严格模式下未定义)

演示:Fiddle