作用域与作用域链

一、是什么

作用域(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

四、核心原理

作用域链是在函数创建时确定的:

👉 和函数定义位置有关(词法作用域)

五、总结

作用域本质:

“变量访问的规则链条”