for循环的经典例题

首先我们来做一题for循环的题目 做题目之前要记得一个口诀 同步 >= 异步 >=回调

for (i=0;i<5;i++){
    console.log(i)  //输出0,1,2,3,4
}
console.log(i) //输出 5

虽然很简单但是我来分析一下,js是自上而下的执行顺序,所以我们这边 for和console属于同步,所以我们这边先是执行for循环是0,1,2,3,4 当i=5的时候是退出for 循环  所以最后的i输出的是 5。

 

  function timer() {
           for(var i=0;i<5;i++){
               setTimeout(function () {
                   console.log(i);
               })
           }
  }
  timer();

这个是一道非常经典的面试题目,我看了非常多的大牛讲解着道题目。但是很多都很透彻!

记得刚刚的口诀

首先一开始函数是不会执行的,虽然是自上而下只有发现了timer()说明调用了这个方法才开始执行函数timer。 这题的关键是settimeout()方法  这个方法是回调,所以是最后执行的。所以console.log(i)中i并不是for循环中的i,当 for循环执行完毕以后 才执行setTimeout 所以是5个5。 

然后一般情况我们为了这么输出是1,2,3,4,5

我们可以把for循环中的var变成let。

另外一个方法就是

    function timer() {
           for(var i=0;i<5;i++){
               function a(i) {
                   setTimeout(function () {
                       console.log(i);
                   })
               }a(i)
           }
       }
       timer();

另外一题是很相似的

猜猜这个结果是什么  是10个10.说说原因就很简单在JS高级程序设计中讲到

  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值