亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一道js面試題,覺得和變量提升有關

一道js面試題,覺得和變量提升有關

慕萊塢森 2018-08-01 16:30:31
(function(){     a = 5;     alert(window.a);     var a = 10;     alert(a);})();這個先打印出 undefined 然后是10,為什么呀?
查看完整描述

3 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

這題目有點神奇 不只是變量提升 是變量提升的應用了。。正解是 var a = 10 在預編譯的時候會在函數里進行變量提升,這個大家都回答到了,然后 變量提升相當于進行了var a 操作,然后a =10 這條代碼解釋執行的時候。。變成了賦值操作,不再進行隱式生命全局變量的操作,導致window.a為undefined,出這道題的人真的機智?。。。。。?!

查看完整回答
反對 回復 2018-08-05
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

第一個 a=5 沒用var, 它并沒有創建變量a, 而是向上級作用域找變量a, 自然是找不到, 所以會創建a, 但創建的a是本域的, 不是window域(頂級域)的, 所以window.a還是undefined .

(function(){

    a = 5;

    alert(a);           //==> 5

    alert(window.a);    //==> undefined

    var a = 10;

    alert(a);           //==> 10

})();


查看完整回答
反對 回復 2018-08-05
  • 3 回答
  • 0 關注
  • 1287 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號