在ECMAScript specification的何处可以找到准确描述创建新的词法环境的文本?
通常,词法环境与ECMAScript代码的某些特定语法结构(例如TryStatement的FunctionDeclaration,BlockStatement或Catch子句)相关联,并且每次评估此类代码时都会创建一个新的词法环境。
每当将控制权从与当前正在运行的执行上下文关联的可执行代码转移到与该执行上下文不关联的可执行代码时,就会创建新的执行上下文。
我试图仅基于来自官方ECMAScript规范的信息来了解JavaScript实现的行为。因此,我尽量避免在其中未定义任何术语(例如 scope )。
答案 0 :(得分:2)
8.1.2.2-8.1.2.6是创建新词法环境的方式。您可以通过搜索名称找到规范中使用的所有位置。
例如。如果您搜索NewFunctionEnvironment,则会发现在9.2.1.1 PrepareForOrdinaryCall中创建了一个。规范中只有一个地方可以创建全局,模块,功能和对象环境。在多个地方创建了声明式环境。