作⽤域链本质上是底层的变量查找机制,在函数被执⾏时,会优先查找当前函数作⽤域中查找变量,如果当前作⽤域查找不到则会依次逐级查找⽗级作⽤域直到全局作⽤域
// 全局作⽤域
let a = 1;
let b = 2;
// 局部作⽤域
// 变量冲突只有在一个作用域里面才存在
// 作用域链从下往上找,就近原则
function f() {
let c;
// let a = 10; // 10
console.log(a); // 1
// console.log(d); // 报错
// 局部作⽤域
function g() {
let d = 'yo';
// let b = 20; // 20
console.log(b); // 2
}
// 调⽤ g 函数
g()
}
// console.log(c); // 报错
// console.log(d); // 报错
f();