第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

一個(gè)關(guān)于let塊級作用域的問題,safari和Chrome下表現(xiàn)不一致

一個(gè)關(guān)于let塊級作用域的問題,safari和Chrome下表現(xiàn)不一致

DIEA 2019-03-04 17:14:43
如題,先上代碼:if(1===1) {    let nameSet = new Set();    if (1 === 2) {        // do nothing    }    else {        function getArrayFromOl() {            console.log('nameSet:', nameSet)        }        getArrayFromOl()    }}這段代碼在 safari 11.0.3 中報(bào)錯(cuò):ReferenceError: Can't find variable: nameSet但是在 Chrome 中卻能訪問到相關(guān)變量。我認(rèn)為也應(yīng)該能訪問到相關(guān)變量...有沒有大神可以解釋下..safari下為何報(bào)錯(cuò)?
查看完整描述

1 回答

?
慕婉清6462132

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊

  if (1 === 1) {

            let nameSet = new Set();

            if (1 === 2) {

                // do nothing

            } else {

                console.log(nameSet)

                getArrayFromOl(nameSet)

                

                function getArrayFromOl(nameSet) {

                    console.log(nameSet)

                }

            }

        }

ps:函數(shù)聲明不要寫在條件語句中,拿出來


補(bǔ)充:

問題主要原因是chrome和safari對于函數(shù)在條件語句中聲明表現(xiàn)不一致導(dǎo)致的??梢杂靡韵麓a驗(yàn)證


        test1() 

        if (true) {

            if (false) {


            } else {

                function test1() {

                    console.log('test') // chrome中報(bào)錯(cuò),safari中打印出`test`

                }

            }

        }

而題主的問題原因是:在safari中 getArrayFromOl函數(shù)相當(dāng)與已經(jīng)提升到最外層的if之外,而nameSet由于是let聲明,所以作用域在第一個(gè)if內(nèi),所以getArrayFromOl取不到相應(yīng)的值


查看完整回答
反對 回復(fù) 2019-03-27
  • 1 回答
  • 0 關(guān)注
  • 393 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號