JS 函数的执行时机

138 阅读1分钟

JS 函数的执行时机对JS函数执行的结果影响很大。

let a = 1 
function fn(){
    console.log(a)
}
a = 2
fn() //此时会打印出2,在调用fn()前,又把2赋值给了a,因此在调用函数后,打印出2

再看一个例子:

let i = 0
for(i = 0;i<6;i++){
   setTimeout(()=>{
    console.log(i)
},0)
}  //打印出 6 个 6

结果似乎有点奇怪,这是因为调用了setTimeout函数,setTimeout的作用是等一会儿再执行,即在上例中要先执行完for循环,再执行console.log(i),而for循环得出的结果是6,因此打印6次的结果都为6。

而要打印出0、1、2、3、4、5,方法如下:

for(let i = 0;i<6;i++){
    setTimeout(()=>{
    console.log(i)
},0)
}  //let在for循环中每次运行的结果都会被储存,相当于有6个i

还可以使用立即执行函数的方法打印出0、1、2、3、4、5

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