立即调用的函数表达式和相应的普通函数调用之间是否存在差异?

时间:2015-05-18 13:36:22

标签: javascript

在立即调用的函数表达式(如

)之间是否存在差异
(function () {
  angular.module("realestateApp", []);
}());

和像

这样的普通函数调用
angular.module("realestateApp", []);

还是等同?

2 个答案:

答案 0 :(得分:4)

不在这个例子中没有......

如果你创建一个变量(或一个函数或一个对象),它可能会在全局命名空间中结束。

(function(){
    var x = 'foo';
})();

将污染全局命名空间,同时:

xcell.style = xcell.style.copy(**style_kwargs)

赢得'吨

答案 1 :(得分:2)

在这种情况下没有区别,但通常如果在代码中创建一些函数或变量,IIFE会为您提供全局命名空间的封装。

IIFE通常用于创建模块:

http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html