<a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures">学习网址推荐</a>
<script>
for(var i = 0; i < 10; i++)
{
setTimeout(function () {
console.log(i);
//打印10次10
},0);
}
</script>
因为JavaScript函数的特点主任务代码先执行
即先把for循环的10次循环走完,再执行setTimeout,此时i为10了
解决代码:
<script>
for(var i = 0; i < 10; i++)
{
function test1(j) {
return function () {
console.log(j);
};
}
var test2 = test1(i);
setTimeout(test2,0);
//打印0到9
}
</script>
网友评论