例如下面這段代碼
復制代碼 代碼如下:
{
var temp = "12";
}
alert(temp); //輸出 12
如果按照通常的編程經驗,那麼alert函數是不可以訪問到temp變量的,因為它在另外一個塊中,但是在JavaScript中,卻沒有塊作用域的概念,所以這種語法對JS不起作用,但是我們在寫JS程序的時候,尤其是比較大的程序或是程序庫,為了防止命名沖突,又需要一種控制變量作用域的機制,所以這裡介紹一種比較普遍的方式,來實現塊作用域的概念,代碼如下:
復制代碼 代碼如下:
(function() {
var temp = "123";
})();
alert(temp); //輸出錯誤
如上面的代碼,定義了一個函數表達式,然後馬上調用它,這種形式模仿了塊作用域的概念,保護了塊內的命名空間,這種方式在一些比較大的程序庫中很好用
(例如JQuery),有效的避免了命名沖突。事實上JQuery正是使用的這種方式來實現塊作用域的。