JS 函数的执行时机

1.为什么下面代码会打印 6 个 6

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

setTimeout是有延迟的执行,虽然设置了0,但是对于计算机的运行速度来说也足以循环执行完毕,当循环6次后,i变成了6,此时就会打印出六个6。

2.让上面代码打印 0、1、2、3、4、5 的方法如下:

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

因JavaScript在for和let一起使用时会加些东西(这些东西我也不知道),会让每次循环都把i复制一份留在空间里,所以会得到0、1、2、3、4、5

3.其他方法打印出 0、1、2、3、4、5

var arr = [0,1,2,3,4,5]
arr.forEach((item) =>{
console.log(item)
})

这是遍历数组的方法,感觉有点傻!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。