作用域与作用域链
一、是什么
作用域(Scope)是变量可访问的范围。
二、三种作用域
1. 全局作用域
var a = 1;
2. 函数作用域
function test() {
var b = 2;
}
3. 块级作用域(ES6)
{
let c = 3;
}
三、作用域链
当访问变量时:
👉 从当前作用域 → 上层作用域 → 全局作用域
let a = 1;
function foo() {
let b = 2;
function bar() {
let c = 3;
console.log(a, b, c);
}
bar();
}
执行顺序查找:bar → foo → global
四、核心原理
作用域链是在函数创建时确定的:
👉 和函数定义位置有关(词法作用域)
五、总结
作用域本质:
“变量访问的规则链条”