1.为什么如下代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
因为let i = 0定义在了for循环外面,再把i放到for循环里面的时候作用域发生了改变,i的作用域不在for循环里面,因此会先循环完,之后再打印i,此时的for循环外面的i已经变成了6
2.写出让上面代码打印 0、1、2、3、4、5 的方法
for(let i = 0;i<6;i++){
setTimeout(()=>{
console.log(i)
},0)
}
3.其他方法打印0、1、2、3、4、5 的方法
let i = 0;
for (i = 0; i < 6; i++) {
(function(i){ //立刻执行函数
setTimeout(function (){
console.log(i);
},0);
})(i);
}