首页 新闻 赞助 找找看

求解释,来大牛,帮菜鸟

0
悬赏园豆:5 [已解决问题] 解决于 2017-03-24 11:27

for(var i=0;i<5;i++){
        setTimeout(function(){
            console.log(++i);
        },100)    //6 7 8 9 10

为什么呀?

菜鸟就的先飞的主页 菜鸟就的先飞 | 初学一级 | 园豆:55
提问于:2016-04-01 10:49
< >
分享
最佳答案
0

JavaScript引擎的單線程概念,

setTimeout的工作實際上要等到引擎空閒時才會執行,並不是真的在100ms後執行

問題中的實際執行順序是

for迴圈 > console.log(++i) > console.log(++i) > console.log(++i) > console.log(++i) > console.log(++i)

for迴圈結束時i的值是6,理所當然後面執行5次console.log(++i)的結果是6, 7, 8, 9, 10

收获园豆:5
RosonJ | 老鸟四级 |园豆:4910 | 2016-04-01 10:56
其他回答(1)
0

同上

心怀宇宙 | 园豆:643 (小虾三级) | 2016-04-01 11:14

你的回答应该是最佳的

支持(0) 反对(1) 菜鸟就的先飞 | 园豆:55 (初学一级) | 2017-03-24 11:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册