1.为什么如下代码会打出6个6
1.1代码
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
1.2原因
- 因为JS是
单线程的,单线程意味着所有的任务都需要排队。前一个任务结束,才会执行后一个任务。 - 该代码执行完for循环过一会再执行console.log(i),但是i执行完的时候已经变成6了,并且不变了,所以过一会打印出来的全是6
2.写出让上面代码打印出0,1,2,3,4,5的方法
2.1代码
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
2.2结果
3.用forEach打印0,1,2,3,4,5
3.1代码
let arr = [0,1,2,3,4,5]
arr.forEach(item=>console.log(item))