循环和定时器的问题


  1. 都知道如果在循环中设置一个定时器,用var且不将内部函数改为立即执行函数的情况下,会循环打印出5

         for(var i = 0;i<5;i++){
              setInterval(function(){              
              console.log(i,"i")
              },200);
          }
    结果:

    https://img.mukewang.com/5c9db5440001aca605790138.jpg

  2. 这种情况会一直打印出0、1、2、3、4、0、1、2、3....

      for(var i = 0;i<5;i++){
           (function(i){
              setInterval(function(){          
              console.log(i,"i")
          },200);
          })(i)
      }
    结果:

    https://img.mukewang.com/5c9db54600018dcb07320520.jpg

  3. 这种写法只打印一次0、1、2、3、4,为什么?

    for(var i = 0;i<5;i++){
        setInterval(function(i){
            console.log(i,"i")
        }(i),200);}
    结果
  4. https://img4.mukewang.com/5c9db54900017a0306890190.jpg


MMTTMM
浏览 490回答 2
2回答

皈依舞

第三种是因为你传入setInterval的第一个参数其实是一个函数的执行结果,并不是一个函数

喵喵时光机

因为没有callbacklet a = function(i){&nbsp; &nbsp; console.log(i,"i")}(i)a;//undefined
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript