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

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

setTimeout問題

setTimeout問題

慕村225694 2018-10-11 14:13:32
    for(var i=0;i<10;i++){        setTimeout((function(i){            console.log(i)        })(i),2000*i)    }這樣寫一個(gè)立即執(zhí)行函數(shù),會0秒打印出0~9,為何2000*i這個(gè)沒有生效?但是里面的i確實(shí)變了啊。for循環(huán)時(shí),難道是setTimeout(fun,0)?我把時(shí)間設(shè)置為10s,也是立即打印的,為什么?    for(var i=0;i<10;i++){        setTimeout((function(i){            return function(){                console.log(i)            }        })(i),2000*i)    }我這樣寫結(jié)果是對了,每隔2s打印i,整個(gè)函數(shù)的執(zhí)行流程是怎么樣的,我的理解如下執(zhí)行for循環(huán)時(shí),立即綁定10個(gè)     setTimeout((function(){})(0),0)~setTimeout((function(){})(9),9)然后0秒執(zhí)行第一個(gè)setTimeout
查看完整描述

1 回答

?
汪汪一只貓

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

你的第一個(gè)種寫法,其實(shí)是立即執(zhí)行函數(shù),實(shí)際效果直接寫console.log(i)是一樣的,因此會立即執(zhí)行,因?yàn)槭悄涿瘮?shù),所以執(zhí)行完之后立即銷毀。所以導(dǎo)致setTimeout里的第一個(gè)參數(shù)變成了undefiend,所以setTimrout不會執(zhí)行,最終你看到的就是立即輸出0-9
而第二種寫法則是運(yùn)用了閉包,所以會保存調(diào)用環(huán)境,因此可以每2s打印一次。

Update: 稍微更改了下敘述,便于理解。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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