学习公式——执行上下文构成

139 阅读1分钟

image.png


执行上下文 = 可变环境+词法环境+其他

词法环境 = 环境记录+外部词法环境引用

环境记录 = 全局环境记录+声明环境记录+对象环境记录

作用域 = 可变环境+词法环境

个人理解:

  1. the running execution context:运行时执行上下文,当程序运行,进入到某段代码块时,一个新的执行上下文被创建,并被放入一个 stack 中。当程序运行到这段代码块结尾后,对应的执行上下文被弹出 stack,就是运行时执行上下文。一般包括Lexical Environments(词法环境)和VariableEnvironment (可变环境)
  2. LexicalEnvironment:词法环境,记录 let、const 的声明。一般包括Environment Record(环境记录)和Reference to an outer Lexical Environment(外部 lexical environment 的引用)
  3. VariableEnvironment:可变环境,记录var 声明的变量,也是LexicalEnvironment的实例
  4. Environment Record:环境记录,存储变量,函数等声明的实际映射,一般包括:Declarative environment record(声明性环境记录) ,  Object environment record(对象环境记录),Global Environment Records(全局环境记录)
  5. Declarative environment record:声明性环境记录,存储变量,函数(可绑定this),常量,类,模块声明
  6. Object environment record:对象环境记录,存储对象声明
  7. Global Environment Records:全局环境记录,存储全局变量,全局对象的属性以及脚本出现的所有顶级声明,可绑定this