经典的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,可能这样还很多很明白。咱们改一下这个例子code

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

这里咱们在for循环里随便打印个什么东西,你会发现最后都是执行了10次。。。
so,到这里我终于明白了。为何最上面的结果是10个10了。io

最后要想打印0到9,有不少方法了。例如:console

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

这样直接打印就行了。。。或者把var或者let。。。for循环

相关文章
相关标签/搜索