js 是一个【解析型】语言。js 解析语言的方式
问题 解析的过程是什么?
- 第一个过程:语言分析。分析代码中是否有【语法错误】,如果有则抛出错误
- 第二个过程:预编译:
- 底层创建对象,Global [Active Objec] ==== 变量对象
- 打开浏览器运行代码前:创建 GO, 提升函数 变量声明提升,作为Go对象下属性
- 函数执行时;创建AO ,提升形参 提升函数声明,提升变量声明,形参实参相同一
- 第三个过程:解析【执行】
- 从上往下的执行。对Go 或者 AO 中属性重新赋值过程
- 函数执行完毕时,AO 销毁。
- 浏览器关闭时,GO 销毁
执行上下文栈
执行上写文栈:管理所有的执行上下文对象
**js 的代码执行有什么特点?**
js 代码的代码执行是一段一段的执行,一段一段的分析执行,在执行一段断码前【准备工作】
准备工作:变量提升,函数声明提升
***js代码执行是通过什么进行管理的呢?例如:谁创建GO Ao,js引擎具体如何工作呢***
- 执行上下文栈
***这里的【一段】具体值得是什么?可以理解:如何划分“段”***
- 浏览器打开初始化 段:全局
- 函数特别多,当执行一个函数时候;为一个【段】
***到底js引擎遇到什么代码会进行【准备工作】呢***
- 创建执行上下文
- 执行上下文中包含:作用域链 scope ,变量对象(GO AO),this
***js代码执行特点***
1:一段一段执行的,段,有执行上下文栈管理,每段中的执行上下,执行上下文中有,作用域链 scope ,变量对象(GO AO),this。函数执行前创建 函数执行上下文;执行完毕时候执行上下文销毁。
在执行上下文栈 底层一直存在 globalContext ,只有应用程序关闭才销毁
### 执行上下文
#### 分类
- 全局执行上下文
- 局部执行上下文
#### 每个执行上下文包含哪些内容
- 作用域链 scope
- 变量对象
- this