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

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

老師,有一段代碼 和EC相關(guān),但是看了有些不明白

var?a?=?1;
function?foo()?{
????if?(!a)?{
???????var?a?=?2;
????}
????alert(a);
};

foo();

我自己的理解以為是輸出1,但是實(shí)驗(yàn)發(fā)現(xiàn)是2.

是不是在變量初始化階段,foo這個(gè)函數(shù)體內(nèi)部也會(huì)進(jìn)行賦值操作。我的理解是是把初始化階段的時(shí)候是把foo存儲(chǔ)到VO中,然后foo中的代碼不會(huì)執(zhí)行。 我以為上面代碼中的foo函數(shù)體中 var a = 2 這個(gè)操作也是 在執(zhí)行階段才開始的?

正在回答

3 回答

個(gè)人理解:

初始化階段: a:undefined foo:<ref of function>

執(zhí)行階段: a:1 foo:function(){ /*function*/};

然后function內(nèi)開始初始化,初始化后由于沒(méi)有調(diào)用,所以沒(méi)有執(zhí)行階段。

然后foo()調(diào)用,開始function內(nèi)部的執(zhí)行階段

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

arlenhui

好了,上面證明我和你思路是一樣的,那么為什么alert(a)是2呢? 那是因?yàn)槟阍诤瘮?shù)內(nèi)部也定義了一個(gè)a,局部變量和全局變量變量名相同但也是不一樣的。所以你輸出的是function內(nèi)部的a=2;而不是window.a。他們不會(huì)判斷覆蓋不覆蓋
2015-05-28 回復(fù) 有任何疑惑可以回復(fù)我~
#2

樂(lè)豬 提問(wèn)者

非常感謝!
2015-05-28 回復(fù) 有任何疑惑可以回復(fù)我~
#3

樂(lè)豬 提問(wèn)者 回復(fù) arlenhui

謝謝。我前幾天也在別的地方找到了正確答案,和你說(shuō)的一樣。
2015-05-28 回復(fù) 有任何疑惑可以回復(fù)我~
#4

Bosn

恭喜你,理解完全錯(cuò)誤。。。完全。
2015-06-05 回復(fù) 有任何疑惑可以回復(fù)我~
#5

arlenhui 回復(fù) Bosn

我并不認(rèn)為理解有誤= = 因?yàn)檩敵龅腶確實(shí)是foo的變量a,foo初始化過(guò)程a是內(nèi)部變量值為undefined取非為true,所以賦值2成功并輸出了。另外借樓問(wèn)一下老師ajax跨域后取得url我想賦值url給a標(biāo)簽的href,但是點(diǎn)擊a標(biāo)簽后發(fā)現(xiàn)瀏覽器屏蔽了我的打開,谷歌了下是瀏覽器認(rèn)為跨域的不安全所以屏蔽,有辦法解決嗎?http://runjs.cn/code/7ggk5mik
2015-06-05 回復(fù) 有任何疑惑可以回復(fù)我~
查看2條回復(fù)

這里有兩個(gè)執(zhí)行環(huán)境,一個(gè)是全局,一個(gè)是foo函數(shù)調(diào)用時(shí)。


很明顯,foo函數(shù)調(diào)用時(shí),由于有var a,所以不管執(zhí)行與否都會(huì)被提前聲明。

所以最外全局的a實(shí)際上是被遮蔽了。


foo執(zhí)行時(shí),a因?yàn)槭莡ndefined,所以!a為真進(jìn)入完成a = 2的賦值。


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

樂(lè)豬 提問(wèn)者

感謝老師解答。 這個(gè)例子中 是不是就是if(!a) 當(dāng)解析器讀到這里的時(shí)候 她發(fā)現(xiàn)有個(gè)a 但是這個(gè)時(shí)候不管是全局還是函數(shù)作用域中都還沒(méi)有a屬性,所以她就直接var a 。
2015-06-05 回復(fù) 有任何疑惑可以回復(fù)我~
#2

olaolaola 回復(fù) 樂(lè)豬 提問(wèn)者

var a = 1; function foo() { if (!a) { var a = 2; } alert(a); }; foo(); alert(a) //1 , 為什么之后再alert(a)外面的沒(méi)被改變啊。
2016-03-22 回復(fù) 有任何疑惑可以回復(fù)我~
#3

飛過(guò)那座山 回復(fù) olaolaola

因?yàn)楹瘮?shù)中a的作用域和全局a的作用域不同,在全局VO中的a在代碼執(zhí)行階段是被賦值為1
2016-06-27 回復(fù) 有任何疑惑可以回復(fù)我~

怎么樣判斷一個(gè)變量是全局變量,在控制臺(tái)中怎么驗(yàn)證啊

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

舉報(bào)

0/150
提交
取消

老師,有一段代碼 和EC相關(guān),但是看了有些不明白

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

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

幫助反饋 APP下載

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

公眾號(hào)

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