为什么如下代码会打印 6 个 6
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
- 代码中 setTimeout 的意思就是执行完 for 循环之后,马上打印出 i 的值
- 因为只有一个 i , i 不小于 6 的时候才会退出循环,所以循环了6次,得到了6个6
let 配合 for 循环可以打印出 0、1、2、3、4、5
for(let i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
- JS 在for和let一起使用的时候会加东西
- 每次循环的时候会多创建一个 i
还有什么方法可以打印出 0、1、2、3、4、5 ?
使用 setTImeout 的可选参数
let i = 0
for(i = 0; i < 6; i++){
setTimeout((x)=>{
console.log(x)
},0,i)
}
使用函数每次把 i 保存下来
for (let i = 0; i < 6; i++) {
setTimeout((function(i){
return function() {
console.log(i);
}
}(i)),0)
}
使用立即执行函数
for (let i = 0; i <6;i++){
!function(i){
setTimeout(()=>{
console.log(i),0})
}(i)
}
for in
let arr=['a','d','e','f','g','q']
for(i in arr){
console.log(i)
}
forEach
let arr=['0','1','2','3','4','5']
arr.forEach(i=>{
console.log(i);
})
let of
let arr=['0','1','2','3','4','5']
for(let i of arr) {
console.log(i);
}