作用域链
嵌套关系的作用域串联起来形成了作用域链
作用:作用域链本质上是底层的变量查找机制(就近原则)
-
在函数被执行时,会优先查找当前函数作用域中查找变量
-
如果当前作用域查找不到则会逐级向上查找父级作用域直到全局作用域
<body>
<script>
// 全局作用域
// let a = 11
let b = 22
// 局部作用域
function f() {
// let a = 1
// 局部作用域
function g() {
// a = 2
console.log(a) // ?
}
g() // 调用g
}
f() // 调用 f
</script>
</body>
总结:
1.嵌套关系的作用域串联起来形成了作用域链
2.查找规则:就近原则
-
当前作用域用找不到,则会逐级查找父级作用域直到全局作用域
-
都找不到则提示错误,这个变量没有被定义过
3.子作用域能够访问父作用域,父级作用域无法访问子级作用域