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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

老師,有些地方不太理解

老師,我想問下

代碼1:function func(){

? ? ? ? ? ? ? ? var o = 1;

? ? ? ? ? ? ? ?function o() {}

? ? ? ? ? ? ? alert(o); ? ? ?//1

? ? ? ? ? ?}

????????????func();

? ? ? ? ? /**************/

代碼2:?function func(){

?????????????alert(o); ? ? ? //function o() {}

?????????????var o = 1;

?????????????function o() {}

????????????}

????????????func();

我有點(diǎn)不太理解,我認(rèn)為第二個(gè)結(jié)果也應(yīng)該是1。初始化時(shí)先找函數(shù)聲明,再找變量聲明,最后執(zhí)行代碼,怎么會跟alert()位置不相同,導(dǎo)致結(jié)果不同呢?

正在回答

4 回答

聲明前置處理,但賦值不會。

也就是說,var o = 1;

這里的var o;被前置處理。

而o = 1// 賦值,是在后面的代碼執(zhí)行階段做的,所以alert寫在前后當(dāng)然有差別。

1 回復(fù) 有任何疑惑可以回復(fù)我~

函數(shù)首先初始化,然后再進(jìn)行執(zhí)行。在兩個(gè)函數(shù)中,聲明都被提前了,但是執(zhí)行的時(shí)候,由于alert()語句的位置不同,func2先alert,此時(shí)VO中的o還未被賦值為1,因此彈出function o() {};而func1中,先執(zhí)行了o的賦值語句,再alert,此時(shí)o的值已經(jīng)改變,所以彈出了1。如果有疑惑,可以一步一步來執(zhí)行這兩個(gè)函數(shù),調(diào)試一下就知道了。

1 回復(fù) 有任何疑惑可以回復(fù)我~

按照老師vo流程處理代碼:

代碼1:function func(){

? ? ? ? ? ? ? ?function o() {}命名函數(shù)提前

? ? ? ? ? ? ? ?var o =undefined;//變量提前命名重復(fù)忽略,這里的o是function o (){}

? ? ? ? ? ? ? ?o = 1;//o給重新賦值;

? ? ? ? ? ? ? ?alert(o); ? ? ?//1

? ? ? ? ? ?}

????????????func();

代碼1:?function func(){

? ? ? ? ? ? ? ? function o() {}命名函數(shù)提前

? ? ? ? ? ? ? ? var o =undefined;//變量提前命名重復(fù)忽略,這里的o是function o (){}

? ? ? ? ? ??? ? alert(o); ? ? ? //function o() {}

? ? ? ? ? ? ? ? ?o = 1;

????????????}

????????????func();


2 回復(fù) 有任何疑惑可以回復(fù)我~

首先謝謝這位同學(xué)的問題,我也郁悶了,老師答的好簡短,還不懂。我是這這么理解的:

alert()輸出要找到變量,如果變量在此之前明確賦值了,那就是變量值優(yōu)先,函數(shù)靠邊。如果alert(o)之前o未賦值,者函數(shù)聲明優(yōu)先

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
JavaScript深入淺出
  • 參與學(xué)習(xí)       281098    人
  • 解答問題       1048    個(gè)

由淺入深學(xué)習(xí)JS語言特性,且解析JS常見誤區(qū),從入門到掌握

進(jìn)入課程

老師,有些地方不太理解

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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