读取ECMAScript specification时,似乎Environment Record(Lexical Environment的组成部分)和Reference都被用来确定{{ 1}}绑定到。换句话说,找到标识符所代表的实际值。
我注意到Identifier
的{{1}}组件可以包含Reference
:
基值部分是未定义的,对象,布尔值, 字符串,符号,数字或环境记录。
但是,我不清楚何时使用Base value
而不是执行上下文,而只是从当前Environment Record
中直接读取Reference
(如{ {1}}的{{1}}组件)。
编辑:
接受@Bergi的回答后,我想补充一些我不了解的内容,以防将来对读者有帮助:
Environment Record
类型
Lexical Environment
的{{1}}(其环境记录)已被首先检查running execution context
,外部环境为LexicalEnvironment
Reference
类型,其running execution context
设置为环境记录中匹配的名称的值LexicalEnvironment
为global environment
的{{1}} null
类型Reference
之后,base value
的{{1}}仅做
Reference
用于引用,以返回其base value
undefined
后才发生 Reference
”意味着查看Reference
返回的GetValue
Expression
总是求值为GetValue(ref)
(一个值)base value
包括其他种类繁多的产品,例如Expression
,这些产品深深地嵌套在Expression production下