當不用var聲明一個JavaScript全局變量時,實際上是定義了全局對象的一個屬性。(在客戶端的JavaScript中,在瀏覽器窗口中的所有JavaScript代碼中,Window對象充當了全局對象。)
當使用var聲明一個變量時,創建的這個屬性是不可配置的,也就是說這個變量無法通過delete運算符刪除。如果你沒有使用嚴格模式並給一個未聲明的變量賦值的話,JavaScript會自動創建一個全局變量。以這種方式創建的變量時全局對象的正常的可配置屬性,並可以刪除他們。
var var_true = 1; // 聲明一個不可刪除的全局變量 var_fake = 2; // 創建全局對象的一個可刪除的屬性 this.var_fake2 = 3; // 同上 delete var_true //=> false:變量無法被刪除 delete var_fake //=> true:變量被刪除 delete this.var_fake2 //=> true:變量被刪除