1 解释为什么如下代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
由于此循环的执行时机,是在过一会之后,i的作用域在for循环之外,因为i那会循环已经执行完毕,i的值变成6,所以在console.log输出i的时候,i的值已经加到6,打印出来就是6个6
2 写出让上面代码打印 0、1、2、3、4、5 的方法
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
由于在执行此循环的时候,每次都会在作用域里,创建一个i的内存,并把值存储在内存中。所以相当于创建了6个变量名为i的变量,所以在console.log输出i的时候,打印出来就是0、1、2、3、4、5
3 除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5
for(let i = 0; i<6; i++){
const a=i;
setTimeout(()=>{
console.log(a)
},0)
}
在循环里每次定义一个常量来记录i自增后的值,然后再输出i,这个也是相当于创建了6个内存来存储每一次i的值,最后再进行打印。