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)
}