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。。。