JS 函数的执行时机

为什么如下代码会打印 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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值