1.理解
- 一块地盘,一段代码所在区域
- 是静态的(相对于上下文对象),在编码时就有。
2.分类
- 全局作用域
- 函数作用域
- 块作用域let const
3.作用
-
隔离变量,不同作用域下同名变量不会冲突
作用域与执行上下文区别
1.区别1
- 全局上下文之外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了,而不是在函数调用时
- 全局执行上下文环境是在全局作用域确定之后,js代码执行之前创建
- 函数执行上下文是在调用函数时,函数体代码执行之前创建
2.区别2
- 作用域是静态的,只要函数定义好了就一直存在,且不会再变化
- 执行上下文是动态的,调用函数时创建,函数调用结束时上下文环境就会被释放
3.联系
- 上下文环境是从属于所在的作用域
- 全局上下文环境属于全局作用域
- 函数上下文环境属于对应函数作用域
查找变量过程
去当前变量的所在作用域的执行上下文对象中找,找不到再去上一级作用域执行上下文对象中找。