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

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

函數(shù)作用域中定義在后面的變量能被前面的表達(dá)式訪問到嗎?

函數(shù)作用域中定義在后面的變量能被前面的表達(dá)式訪問到嗎?

慕妹3146593 2019-04-10 20:48:34
functiontest(){alert(a);vara=10;}test();運(yùn)行結(jié)果是Undefined。這與書上寫的“函數(shù)中的任何位置定義的變量在該函數(shù)中的任何地方都可見(《javascript語言精粹》第36頁)”似乎是矛盾的。想請教各位,我可能在什么地方理解有誤。
查看完整描述

2 回答

?
猛跑小豬

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

不矛盾的,JavaScript會(huì)加載或者說是解析兩次
第一次:解析加載變量聲明,函數(shù)聲明,對函數(shù)的參數(shù)賦值
第二次:給變量賦值,執(zhí)行函數(shù)
因?yàn)閖s是順序加載,即從上到下,所以在函數(shù)中,的加載順序是這樣的:
//無變量聲明1
functiontest(){
//參數(shù)賦值2.1無參數(shù),所以無參數(shù)賦值
vara;//聲明變量2.2變量聲明總會(huì)優(yōu)先于變量賦值,所以就有“變量提示”這一說
//無函數(shù)聲明2.3
alert(a);//執(zhí)行函數(shù)2.4a因?yàn)闆]有賦值,所以是undefined
a=10;//賦值變量2.5a現(xiàn)在被賦值了a=10
}
test();//2這里挺關(guān)鍵的分解看是聲明函數(shù)表達(dá)式+執(zhí)行函數(shù)==>test+()
//在聲明的時(shí)候會(huì)跳到函數(shù)表達(dá)式聲明的地方
總結(jié):
不要在變量賦值之前使用,除非你想用其默認(rèn)值
函數(shù)聲明在哪里(執(zhí)行位置的前后)都可以
                            
查看完整回答
反對 回復(fù) 2019-04-10
?
ITMISS

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

變量提升(hoist),這段代碼相當(dāng)于:
functiontest(){
vara;
alert(a);//undefined
a=10;
}
                            
查看完整回答
反對 回復(fù) 2019-04-10
  • 2 回答
  • 0 關(guān)注
  • 313 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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