自学内容网 自学内容网

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)!