JS 函数的执行时机-关于setTimeout

  1. 以下代码为什么会打印出6个6
let i=0
for(i=0;i<6;i++){
setTimeout(()=>{
console.log(i)
},0)
}

因为setTimeout的意思是稍后执行,也就是在等for循环结束之后再执行console.log(i),当for结束循环的时候i等于6,且只有1个i,所以打印出6个6

  1. 如何让以上代码打印出0--6
for(let i=0;i<6;i++){
setTimeout(()=>{
console.log(i)
},0)
}

因为JS在for和let一起用的时候会在每次循环的时候多创建一个i,每次循环都会重新创建一个i,所以会打印出0,1,2,3,4,5.

推荐阅读更多精彩内容

  • 之前在网上看了很多关于setTimeout的文章,但我感觉都只是点到为止,并没有较深入的去剖析,也可能是我脑袋瓜笨...
    Designleiou阅读 283评论 1 1
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 1,241评论 0 2
  • JS函数的调用时机 以下代码为什么会打印出6个6 因为setTimeout的意思是稍后执行,也就是在等for循环结...
    csy没有昵称阅读 93评论 2 1
  • 之前在网上看了很多关于setTimeout的文章,但我感觉都只是点到为止,并没有较深入的去剖析,也可能是我脑袋瓜笨...
    jia58960阅读 31,585评论 21 61
  • 吴溢跟我讲她已经请假明天去弄入户的事的时候我真的很愤怒,woc她怎么能那么过份,能明白那种痛吗,就是本来想着你的好...
    非其阅读 21评论 0 0