JS 函数的执行时机

108 阅读1分钟
let a= 0
for(i = 0;i<6;i++){
    setTimeout(()=>{
        console.log(a)
    },0)
}

打印6个6

JS会先执行for 循环,for执行完了 才会执行setTimeout里的代码 此时 a = 6

打印0 1 2 3 4 5

let for 配合 会每次把复制到setTimeout 里一份

for(let i =0;i<6;i++){
    setTimeout(()=>{
        console.log(i)
    })
}

不使用let for 打印0 1 2 3 4 5

使用立即执行函数,创建局部作用域,在此作用域下去执行setTimeout

for(var i =0;i<6;i++){

   !function (){
       var temp = i
        setTimeout(()=>{
            console.log (temp)
        })
    }()

}