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

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

請(qǐng)指點(diǎn)結(jié)果為何是undefined

請(qǐng)指點(diǎn)結(jié)果為何是undefined

qq_遁去的一_1 2018-08-02 08:30:01
if(!("a" in window)){    var a = 10;}console.log(a); // undefined
查看完整描述

3 回答

?
墨色風(fēng)雨

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

首先弄明白in運(yùn)算符,可以在MDN中查看。如果指定的屬性在指定的對(duì)象或其原型鏈中,則in 運(yùn)算符返回true。

然后就是js引擎執(zhí)行js語(yǔ)句機(jī)制了,js引擎運(yùn)行時(shí)會(huì)執(zhí)行三步操作,第一步是先檢查你的js代碼有沒(méi)有低級(jí)的語(yǔ)法錯(cuò)誤,第二步是預(yù)編譯,第三步是根據(jù)代碼順序解釋一句執(zhí)行一句。

預(yù)編譯就是在執(zhí)行代碼會(huì)把所有的變量聲明和函數(shù)聲明預(yù)先處理。當(dāng)你寫了一句var a = 1時(shí),javascript會(huì)當(dāng)成兩個(gè)操作(變量聲明和變量賦值):var a;和a = 1;第一句(變量聲明)是在預(yù)編譯中執(zhí)行的,此時(shí)只是聲明了a這個(gè)變量,沒(méi)有賦值操作,所以此階段a的值為undefined。等預(yù)編譯結(jié)束,才開始上面的第三步解釋執(zhí)行js代碼。

所以根據(jù)執(zhí)行先后上面的代碼可以分解為下面的代碼:

// 先進(jìn)行預(yù)編譯


var a; // 此時(shí)a的值為undefined


// 預(yù)編譯結(jié)束  開始解釋執(zhí)行代碼


if(!("a" in window)){ // 變量a此時(shí)已經(jīng)存在,所以!("a" in window)為false

    a = 10; // 跳過(guò)不執(zhí)行  a的值還是undefined

}


console.log(a)  // undefined


查看完整回答
反對(duì) 回復(fù) 2018-08-05
?
侃侃無(wú)極

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

由于變量提升,var a會(huì)在一開始的時(shí)候就出現(xiàn),此時(shí)值為undefined,然后執(zhí)行到if時(shí),由于a已經(jīng)在window中定義了,即開辟了一塊內(nèi)存,所以判斷結(jié)果為真,然后!真就變?yōu)榧?,所以跳過(guò)了賦值語(yǔ)句,最后console的是未賦值的a,結(jié)果為undefined

查看完整回答
反對(duì) 回復(fù) 2018-08-05
?
阿晨1998

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

因?yàn)樽兞刻嵘阶饔糜蝽敳?/p>


//變量提升

var a ;


//此時(shí) a 為全局變量  a in window 為 true


if(!("a" in window)){

 var a = 10;

}

console.log(a); // undefined


查看完整回答
反對(duì) 回復(fù) 2018-08-05
  • 3 回答
  • 0 關(guān)注
  • 1124 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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