2010-03-08 185 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) { 
    // ... 
    }; 
    // ... 
})(); 

現在,這些臨時變量和函數都在該外部丟棄函數內受到保護。其中的代碼可以使用它們,但全局名稱空間保持乾淨並且沒有髒,不需要的變量。

全局命名空間是一個寶貴的資源。我們都應該意識到自己的重要性,尤其是對我們的孩子。