我们可以在 ECMAScript 规范的什么地方准确找到新词法环境的创建时间?
Where in the ECMAScript specification can we find exactly when new Lexical Environments are created?
我们可以在 ECMAScript specification 的哪个位置找到准确描述新 词法环境 何时创建的文本?
- 我在“8.1 Lexical Environments”中找不到它,它只是粗略地指出:
Usually a Lexical Environment is associated with some specific syntactic structure of ECMAScript code such as a FunctionDeclaration, a BlockStatement, or a Catch clause of a TryStatement and a new Lexical Environment is created each time such code is evaluated.
- 从“8.3 Execution Contexts”,我们知道每个执行上下文都包含一个词法环境,但我们不知道新的执行上下文何时被创建,事实上是否还有其他情况会创建 词法环境 。 8.3 仅规定:
New execution context is created whenever control is transferred from the executable code associated with the currently running execution context to executable code that is not associated with that execution context.
我试图理解 JavaScript 实现的行为,完全基于来自官方 ECMAScript 规范的信息。因此,我尽量避免其中未定义的任何术语(例如 scope)。
8.1.2.2 - 8.1.2.6 是创建新词法环境的方式。您可以通过搜索名称找到规范中使用的所有位置。
例如。如果搜索 NewFunctionEnvironment,您会发现在 9.2.1.1 PrepareForOrdinaryCall 中创建了一个。规范中只有一个地方创建了全局、模块、函数和对象环境。有几个地方创建了声明式环境。
我们可以在 ECMAScript specification 的哪个位置找到准确描述新 词法环境 何时创建的文本?
- 我在“8.1 Lexical Environments”中找不到它,它只是粗略地指出:
Usually a Lexical Environment is associated with some specific syntactic structure of ECMAScript code such as a FunctionDeclaration, a BlockStatement, or a Catch clause of a TryStatement and a new Lexical Environment is created each time such code is evaluated.
- 从“8.3 Execution Contexts”,我们知道每个执行上下文都包含一个词法环境,但我们不知道新的执行上下文何时被创建,事实上是否还有其他情况会创建 词法环境 。 8.3 仅规定:
New execution context is created whenever control is transferred from the executable code associated with the currently running execution context to executable code that is not associated with that execution context.
我试图理解 JavaScript 实现的行为,完全基于来自官方 ECMAScript 规范的信息。因此,我尽量避免其中未定义的任何术语(例如 scope)。
8.1.2.2 - 8.1.2.6 是创建新词法环境的方式。您可以通过搜索名称找到规范中使用的所有位置。
例如。如果搜索 NewFunctionEnvironment,您会发现在 9.2.1.1 PrepareForOrdinaryCall 中创建了一个。规范中只有一个地方创建了全局、模块、函数和对象环境。有几个地方创建了声明式环境。