循环和定时器的问题

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

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

    图片描述

  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)
      }
    结果:

    图片描述

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

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

    图片描述

阅读 1.7k
2 个回答

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

因为没有callback

let a = function(i){
    console.log(i,"i")
}(i)

a;//undefined
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题