典范的for轮回案例


for (var i = 0; i < 10; i++) {
    setTimeout(function() { console.log(i); }, 100 * i);
}

想一想打印效果是啥?

没错是10次10,为何不是我们想要的0,1,2,3,4,5,6,7,8,9?
最先我也很疑惑,一向想不邃晓。找了许多材料才终究想邃晓了。实在网上说的许多什么异步,闭包等等,我以为诠释的不是很轻易邃晓。

实在简朴点来讲:
1.这个for轮回肯定是轮回10次的,所以效果为何是10个10
2.由于setTimeout要领是在for轮回完毕以后再实行的,for轮回异常的快,完毕以后的i是10.
3.在这个for轮回当中的setTimeout是会实行10次的。所以效果10个10,能够如许还不少很邃晓。我们改一下这个例子

for (var i = 0; i < 10; i++) {
        console.log(123);
    }
    

这里我们在for轮回里随意打印个什么东西,你会发明末了都是实行了10次。。。
so,到这里我终究邃晓了。为何最上面的效果是10个10了。

末了要想打印0到9,有许多要领了。比方:

for (var i = 0; i < 10; i++) {
       console.log(i);
 }

如许直接打印就好了。。。或许把var或许let。。。

    原文作者:woxindead
    原文地址: https://segmentfault.com/a/1190000013064963
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞