JS 函数的执行时机

68 阅读1分钟
let i = 0
for(i = 0; i<6; i++){
  setTimeout(()=>{
    console.log(i)
  },0)
}

上面代码问打印出什么,答案是6个6,首先i后面只有一个值,setTimeout的意思是你去数苹果有多少个,数着数着,你妈妈问你一共有几个苹果,你告诉妈妈最终的数字就行,即让你运行完i的值,过一会马上打印出i的最终值,当i为6时,刚好满足i<6,所以循环了6次

那怎么让它打印出0,1,2,3,4,5呢?

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

只需要把let放到里面即可

  • 方法二
for(let i = 0; i < 6; i++){
 setTimeout(i => console.log(i), 0,  i )
}
console.log(-1)