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();

另外一题是很相似的

for循环的经典例题_第1张图片

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

for循环的经典例题_第2张图片

for循环的经典例题_第3张图片

你可能感兴趣的:(前端大杂烩)