词法环境(Lexical Environment)
官方定义
官方 ES2020 这样定义词法环境(Lexical Environment):
A Lexical Environment is a specification type used to define the association of Identifiers to specific variables and functions based upon the lexical nesting structure of ECMAScript code. A Lexical Environment consists of an Environment Record and a possibly null reference to an outer Lexical Environment.
词法环境是一种规范类型(specification type),它基于 ECMAScript 代码的词法嵌套结构,来定义标识符与特定变量和函数的关联关系。词法环境由环境记录(environment record)和可能为空引用(null)的外部词法环境组成。
说的很详细,可是很难理解喃🤔
下面,我们通过一个 V8 中 JS 的编译过程来更加直观的解释。
V8 中 JS 的编译过程来更加直观的解释
大致分为三个步骤:
- 第一步 词法分析 :V8 刚拿到执行上下文的时候,会把代码从上到下一行一行的进行分词/词法分析(Tokenizing/Lexing),例如
var a = 1;
,会被分成var
、a
、1
、;
这样的原子符号((atomic token)。词法分析=指登记变量声明+函数声明+函数声明的形参。 - 第二步 语法分析 :在词法分析结束后,会做