js中for循环 输出5个5
先不考虑为啥是5个5,而不是 0, 1, 2, 3, 4
理解为什么 上面下面输出最大值是4,中间的最大值是5 ,5是哪里来的。
<script>
for (var i = 0; i < 5; i++) {
console.log(i,'上面')
setTimeout(function () {
console.log(i,'中间');
}, 1000);
console.log(i,'下面')
}
</script>
<script>
/*
先理解 i++的执行
let i = 5;
let a = i++; // 先将 i 的当前值(5)赋给 a,然后将 i 的值加 1,所以 a = 5,i = 6
let j = 5;
let b = ++j; // 先将 j 的值加 1(变成 6),然后将 j 的新值(6)赋给 b,所以 b = 6,j = 6
在理解 上面for循环的执行
1、第一次循环开始 输出 0 循环结束 i = 1
2、第二次循环开始 输出 1 循环结束 i = 2
3、第三次循环开始 输出 2 循环结束 i = 3
4、第四次循环开始 输出 3 循环结束 i = 4
5、第五次循环开始 输出 4 循环结束 i = 5
5、第五次循环结束,想要进行 第六次循环 发现 当前的i = 5 不满足小于5 所以 不能进行第六次循环
所以 循环结束之后 i = 5
setTimeout是宏任务,不管它是宏任务还是微任务,他都是异步任务 ,同步任务先执行。
理解以上之后,再去考虑,为啥 var 的时候是5个5 ,let的时是01234,再去考虑var和let的相同点和异同点。
*/
</script>
输出结果:
原文地址:https://blog.csdn.net/m0_52244931/article/details/137633112
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!