3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
這題目有點(diǎn)神奇 不只是變量提升 是變量提升的應(yīng)用了。。正解是 var a = 10 在預(yù)編譯的時(shí)候會(huì)在函數(shù)里進(jìn)行變量提升,這個(gè)大家都回答到了,然后 變量提升相當(dāng)于進(jìn)行了var a 操作,然后a =10 這條代碼解釋執(zhí)行的時(shí)候。。變成了賦值操作,不再進(jìn)行隱式生命全局變量的操作,導(dǎo)致window.a為undefined,出這道題的人真的機(jī)智?。。。。。?!

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
第一個(gè) a=5 沒(méi)用var, 它并沒(méi)有創(chuàng)建變量a, 而是向上級(jí)作用域找變量a, 自然是找不到, 所以會(huì)創(chuàng)建a, 但創(chuàng)建的a是本域的, 不是window域(頂級(jí)域)的, 所以window.a還是undefined .
(function(){
a = 5;
alert(a); //==> 5
alert(window.a); //==> undefined
var a = 10;
alert(a); //==> 10
})();
添加回答
舉報(bào)