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

时间:2010-03-08 13:36:21

标签: javascript function initialization

  

可能重复:
  JavaScript: Why the anonymous function wrapper?

嗨,大家好,

我想问你在

中包装所有内容的原因是什么
(function() {
  document.write("Hello World!");
})(); 

功能?

欢呼声

2 个答案:

答案 0 :(得分:11)

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

var test = 1;

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

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

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

答案 1 :(得分:5)

“保护”全球命名空间免受污染。

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

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

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