js上下文执行机制
执行上下文
- ECS(Execute Context Stack): js函数执行上下文从逻辑上形成一个栈。栈底总是全局上下文,栈顶是当前(活动的)执行上下文。
- GC(Global Context): 全局上下文。
- GO(Global Context): 全局上下文生成的对象。
- VO(Var Object): 声明时对象。
- AO(Action Object): 执行时对象。
在AO执行时,分为两个阶段:
- 变量定义:AO的准备阶段,es6之前的变量提升就在这个阶段
- 变量赋值。
数据结构
1 | // 全局上下文 |
为了适配早起的ES5的var等,增加了变量环境。变量环境也是一个词法环境,其环境记录其包含了由变量声明语句。
在ES6中,词法环境记录器和变量环境记录器的区别在于:
- 词法环境:用于存储函数声明和变量(let,const)的绑定。
- 变量环境:仅用于存储变量(var)的绑定
作用域链
- scope chain:作用域链
其实就是在 [AO,GC,VO] 时。 - 闭包原理* 在作用域scope堆空间中存储closore(fn)。
- 本文标题:js上下文执行机制
- 本文作者:乔文飞
- 创建时间:2021-08-09 08:28:01
- 本文链接:http://www.feidom.com/2021/08/09/js函数执行机制/
- 版权声明:本博客所有文章为作者学习笔记,有转载其他前端大佬的文章。转载时请注明出处。