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

Mar*_*cin 7 javascript initialization function

可能重复:
JavaScript:为什么匿名函数包装器?

嗨,大家好,

我想问你包装所有内容的原因是什么

(function() {
  document.write("Hello World!");
})(); 
Run Code Online (Sandbox Code Playgroud)

功能?

干杯

med*_*iev 11

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

var test = 1;
Run Code Online (Sandbox Code Playgroud)

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

(function() {
    var test = 1; alert( test );
})();
Run Code Online (Sandbox Code Playgroud)

window.test未定义,因为它位于我们的私有沙箱中.


Poi*_*nty 5

这"保护"全球命名空间免受污染.

(function() {
  var something = "a thing";
  // ...
  if (something != "a thing") alert("help!");
  // ...
  function utility(a, b) {
    // ...
  };
  // ...
})();
Run Code Online (Sandbox Code Playgroud)

现在,那些临时变量和函数都在外部抛弃函数内受到保护.里面的代码可以使用它们,但全局命名空间保持干净,没有脏的,不需要的变量.

全局命名空间是一种宝贵的资源.我们都应该意识到它对我们自己,特别是对我们的孩子的重要性.