函数的执行机制
function f1(){
let a = 1
function f2(){
let a = 2
function f3(){
console.log(a)
}
a = 22
f3()
}
console.log(a)
a = 100
f2()
}
f1()
理解如上代码的结果就大概明白函数的执行时机了
- 为什么如下代码会打印 6 个 6?
let i = 0
for(i = 0; i<6; i++){
setTimeout(()=>{
console.log(i)
},0)
}
答:因为i声明在全局,setTimeout定时器是过会儿执行,当要执行定时器时,循环已经结束,此时i的值为6,所以会打印出6个6
-
打印 0、1、2、3、4、5 的方法
for(let i = 0; i<6; i++){ setTimeout(()=>{ console.log(i) },0) }