声明/初始化JavaScript函数 (function() {})()

8
2个回答

13

自执行匿名函数的主要目的是将所有内容包装在私有名称空间中,这意味着声明的任何变量都不会污染全局名称空间,基本上像一个沙盒。

var test = 1;

test会污染全局命名空间,会设置window.test。

(function() {
    var test = 1; alert( test );
})();

因为它在我们的私人沙盒中,所以window.test未定义。


5
那可以“保护”全局命名空间免受污染。
(function() {
  var something = "a thing";
  // ...
  if (something != "a thing") alert("help!");
  // ...
  function utility(a, b) {
    // ...
  };
  // ...
})();

现在,那些临时变量和函数都被保护在外部的一次性函数中。里面的代码可以使用它们,但全局命名空间保持干净,没有脏的、不需要的变量。
全局命名空间是一个宝贵的资源。我们都应该意识到它对我们自己和尤其是我们的孩子的重要性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接