雖然可以先使用再聲明,但這樣會造成賦值的效果丟失。如下
復制代碼 代碼如下:
alert(a);
var a = 1;
這次輸出的仍然是undefined而非1。
又如,
復制代碼 代碼如下:
alert('a' in window); // true
var a;
雖然代碼形式上寫在alert後,引擎仍然先自動處理var的聲明。最後輸出的是true。
明白了這些就不難理解下面的代碼運行結果了
復制代碼 代碼如下:
if (!("a" in window)) {
var a = 1;
}
alert(a);