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

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

如果同一段代碼在es5和es6輸出不同結果,那么在運行時按哪個標準?

如果同一段代碼在es5和es6輸出不同結果,那么在運行時按哪個標準?

一青 2018-01-15 16:16:40
function?f()?{?console.log('I?am?outside!';} (function?()?{ ????if(false)?{ ????????function?f()?{?console.log('I?am?inside!';} ????} ????f(); }()); //es5會輸出I?am?inside!,es6會輸出I?am?outside! //那么用babel編譯,最后在輸出的時候是輸出什么? //如果輸出的是I?am?outside!,意思就是說當同一段代碼出現歧義的時候,會默認采用es6嗎?
查看完整描述

2 回答

已采納
?
林逸舟丶

TA貢獻124條經驗 獲得超28個贊

我跑了下你的代碼,首先兩個console沒有凡括號,其次最末尾有一對括號,在被添加時會報錯

http://img1.sycdn.imooc.com//5a5d555400015c7505540213.jpg

去掉之后無報錯,運行f()

輸出outside

http://img1.sycdn.imooc.com//5a5d55ae00012d8604670336.jpg

查看完整回答
1 反對 回復 2018-01-16
  • 一青
    一青
    謝謝回答,我想再請問一下在這里輸出了outside是因為es5和es6有歧義的時候默認采用es6來編譯嗎?
  • 一青
    一青
    我已經知道了,再次感謝!
?
林逸舟丶

TA貢獻124條經驗 獲得超28個贊

首先,應該回答你,目前是按照es5的標準。

其次if表達式為false,按照邏輯,f()是不該被重新定義輸出inside的,這顯然是一個邏輯bug

最后,用babel編譯,其實是把es6的較新語法轉換成了es5支持的語法,所以,按照當前場景,最后會輸出什么,我覺得應該是I am inside!

查看完整回答
反對 回復 2018-01-16
  • 2 回答
  • 0 關注
  • 1245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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