兔子零-A酱

欢迎来到我的个人博客,我会在这里记录下关于学习和生活的点点滴滴

JavaScript函数的执行时机

JavaScript函数的执行时机

let i = 0
for(i = 0; i < 6; i++){
  setTimeout(() => {
    console.log(i)
  }, 0)
}

以上代码中,for循环执行完毕后,i的值为6,此时才打印setTimeout中的i,所以会打印6个6

for(let i = 0; i < 6; i++){
  setTimeout(() => {
    console.log(i)
  }, 0)
}

这样改进后,每一次执行循环会多创建一个i,所以最后打印出的是0、1、2、3、4、5

如果不用let,还可以像这样达到预期的效果:

for(var i = 0; i < 6; i++){
    (function(i) {
        setTimeout(() => {
            console.log(i)
        }, 0)
    })(i)
}
上一篇文章 下一篇文章