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
setTimeout問題
慕村225694
2018-10-11 14:13:32
