js中搜索变量的顺序
本来认为访问变量会按照本层作用域—>上层作用域的顺序进行寻找,但在现代javascript教程中发现实际上搜索变量是按照内部词法环境—>外部词法环境的顺序进行,而函数引用的外部词法环境是在创建的时候就确定的。
![现代javascript教程](https://img-blog.csdnimg.cn/direct/fcbe4d184b434b588bd2a1ac95acbbc8.png#pic_center)
let a = 1
function fn1() {
console.log(a)
}
function fn2() {
let a = 2
fn1()
}
function fn3() {
let a = 2
function fn4(){
console.log(a)
}
fn4()
}
fn2()
fn3()