#JavaScript
======================================================
1. 作用域链概念
| 概念 | 说明 |
|---|---|
| 作用域链 | 本质上是底层的变量查找机制,嵌套关系的作用域串联起来形成了作用域链 |
======================================================
2. 变量查找规则
| 规则 | 说明 |
|---|---|
| 优先查找 | 在函数被执行时,会优先查找当前函数作用域中查找变量 |
| 逐级查找 | 如果当前作用域查找不到则会依次逐级查找父级作用域直到全局作用域 |
| 查找顺序 | 相同作用域链中按从小到大的规则查找变量 |
| 访问权限 | 子作用域能够访问父作用域,父级作用域无法访问子级作用域 |
======================================================
3. 作用域链总结
- 嵌套关系:嵌套关系的作用域串联起来形成了作用域链
- 查找顺序:相同作用域链中按从小到大的规则查找变量
- 访问权限:子作用域能够访问父作用域,父级作用域无法访问子级作用域
======================================================
4. 作用域链示例
4.1 代码示例
javascript
// 全局作用域
let a = 1
let b = 2
// 局部作用域
function f() {
let a = 1
// 嵌套作用域
function g() {
a = 2
console.log(a) // 输出: 2
}
g() // 调用g
}
f() // 调用f4.2 作用域链结构
global (全局作用域)
↓
f (函数f的作用域)
↓
g (函数g的作用域)======================================================
