作用域
-
作用域
- 1. 变量使用使用区间的, 变量不是说声明之后在哪里都可以用, 他有一个使用的范围, 我们把这个范围叫做 作用域
- 作用域分为两种
- 1. 全局作用域
- JS 给我们提供了一个叫做 window 的全局作用域, 可以理解为 整个 script 标签内的作用域, 就是全局作用域
- 全局变量都会挂载到 window 对象上
- 2. 局部作用域
- 在 JS 中, 有 且只有 函数能够创建 局部作用域(函数作用域), 局部作用域开始和结束位置, 就是函数代码段的开始和结束位置
- 在 局部作用域(函数作用域)内 声明的变量叫做局部变量
- 局部变量 不会挂载到 window 对象
- function唯一划分作用域
作用域链条
- 作用域链
- 在查找过程中逐级向上形成的链条叫做作用域链(定义非实际存在)
- //作用域链只会向上查找
- 变量访问
- 变量就近访问变量原则,没有向上级作用域查找
- 如果找不到继续向上,
- 如果实在找不到 就报错
- 变量赋值
- 变量就近访问变量原则,没有向上级作用域查找
- 如果找不到继续向上,
- 如果实在找不到 就将变量定义在全局作用域内
//就近访问原则, function唯一划分作用域
var num = 1
function fn() {
// var num = 200
function fn1() {
// var num = 300
console.log(num)
}
fn1()
}
fn()