JS 函数的执行时机

1、解释为什么如下代码会打印 6 个 6

1
2
3
4
5
6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}

SetTimeout在for循环之后才执行,那时候i为6,然后再打印出6次6

2、写出让上面代码打印 0、1、2、3、4、5 的方法

1
2
3
4
5
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}

3 、(可选内容)除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5,如果你能找到并写在博客里,可以得到五星好评 :)

方法一:

1
2
3
4
5
6
7
8
let i = 0
while(1){
console.log(i)
i++
if(i>5){
break;
}
}

方法二:

1
2
3
4
5
6
7
8
9
let i = 0
let timer = setInterval(()=>{
if(i<6){
console.log(i);
i++;
}else{
this.timer = null;
}
}, 0);

方法三:

1
2
3
4
let i = new Array(6).fill('')
i.map((k,j)=>{
console.log(j);
})

方法四:

1
2
3
4
5
6
7
8
9
let i = 0
switch (i){
case 0:console.log(i);i++;
case 1:console.log(i);i++;
case 2:console.log(i);i++;
case 3:console.log(i);i++;
case 4:console.log(i);i++;
case 5:console.log(i);break;
}