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

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

前端面試的一個(gè)小問(wèn)題

前端面試的一個(gè)小問(wèn)題

BIG陽(yáng) 2019-04-09 20:23:34
昨天去一家公司面試前端,第二輪技術(shù)面給我出了一個(gè)題varlen=4;while(len--){setTimeout(function(){alert(len);},0);alert(len);}問(wèn)輸出結(jié)果當(dāng)時(shí)有點(diǎn)蒙,自己不熟悉setTimeOut函數(shù)以為time為0就是立即調(diào)用,然后考官說(shuō)setTimeOut是異步的,即使是0也會(huì)在最后執(zhí)行,結(jié)果輸出應(yīng)該為3,2,1,0,-1,-1,-1,-1.后來(lái)又變了題目是:varlen=4;while(len--){(function(i){setTimeout(function(){alert(i);},0);})(len);alert(len);}這次我就很清楚了,產(chǎn)生一個(gè)閉包,每次len的變化i都保存了一個(gè)copy,所以輸出是3,2,1,0,3,2,1,0.但是剛才寫demo的時(shí)候發(fā)現(xiàn)第一段代碼的輸出符合預(yù)期,第二段的輸出開(kāi)始4個(gè)是3,2,1,0但是后面的也就是setTimeout中的輸出有時(shí)候都不一樣,有時(shí)是0,2,1,3有時(shí)是2,1,0,3等等求解釋。
查看完整描述

2 回答

?
偶然的你

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

前邊那個(gè)你理解了?那我只說(shuō)后邊那個(gè)——閉包。
(function(i){setTimeout(function(){alert(i);},0);})(len);
這里創(chuàng)建了一個(gè)函數(shù)并立即調(diào)用了,函數(shù)的參數(shù)i被設(shè)置成len現(xiàn)在的值,然后它就不改了。所以它alert的值是0-3而不是-1。
至于順序,都是延時(shí)0毫秒執(zhí)行,所以順序是亂的。
                            
查看完整回答
反對(duì) 回復(fù) 2019-04-09
  • 2 回答
  • 0 關(guān)注
  • 455 瀏覽
慕課專欄
更多

添加回答

舉報(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)