2010-03-08 136 views

回答

11

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

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) { 
    // ... 
    }; 
    // ... 
})(); 

现在,这些临时变量和函数都在该外部丢弃函数内受到保护。其中的代码可以使用它们,但全局名称空间保持干净并且没有脏,不需要的变量。

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