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

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

《你不知道的javascript》循環(huán)和閉包的案例

《你不知道的javascript》循環(huán)和閉包的案例

長風(fēng)秋雁 2018-10-20 14:11:41
for(var i=1;i<=5;i++){   setTimeout(function timer(){       alert(i);   },i*1000);}在《你不知道的javascript》中,是這么描述這段代碼的:缺陷是我們試圖假設(shè)循環(huán)中的每個(gè)迭代在運(yùn)行時(shí)都給自己"捕獲"一個(gè)i的副本。但是根據(jù)作用域的工作原理,實(shí)際情況是盡管循環(huán)中的五個(gè)函數(shù)是在各個(gè)迭代中分別定義的,但是它們都被封閉在一個(gè)共享的全局作用域中,因此實(shí)際上只有一個(gè)i.疑問:只有一個(gè)i(為啥i是6)?能不能這么理解?在函數(shù)的5次迭代中,每一次在迭代運(yùn)行時(shí)都給自己捕獲了一個(gè)i的副本。i排序也就是1,2,3,4,5,6;但是,又根據(jù)作用域的工作原理(詞法作用域的查找規(guī)則),這6個(gè)i中只能是其中一個(gè)i,最后根據(jù)i所出現(xiàn)的順序的先后,6是出現(xiàn)在排序中的最末位,所以這唯一一個(gè)i就是6.
查看完整描述

1 回答

?
達(dá)令說

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

第一次進(jìn)入循環(huán)后,設(shè)置一個(gè)定時(shí)器,將Timer函數(shù)傳入,但此時(shí)并不執(zhí)行,繼續(xù)往下進(jìn)入第二次循環(huán)。當(dāng)循環(huán)結(jié)束之后i=6。然后定時(shí)器觸發(fā),發(fā)現(xiàn)函數(shù)中用到i變量,于是瀏覽器從當(dāng)前作用域往上找,發(fā)現(xiàn)有i變量,值等于6.于是傳入的i都等于6


查看完整回答
反對 回復(fù) 2018-11-22
  • 1 回答
  • 0 關(guān)注
  • 510 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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