【发布时间】:2013-12-20 02:44:40
【问题描述】:
关于环境记录
环境记录记录了创建的标识符绑定 在其相关词汇环境的范围内。
这里使用了两种环境记录值 规范:声明性环境记录和对象环境 记录。声明性环境记录用于定义效果 ECMAScript 语言语法元素,例如 FunctionDeclarations、VariableDeclarations 和 Catch 子句 直接将标识符绑定与 ECMAScript 语言相关联 价值观。对象环境记录用于定义效果 关联的 ECMAScript 元素,例如 Program 和 WithStatement 标识符与某些对象的属性绑定。
请检查我的理解:
因此,如果我们考虑以下代码sn-p:
function foo(){
var bar={prop:'prop'}
var test_bar=bar;
test_test_bar={p:'p'};
}
相应的声明性环境记录将包含绑定bar-->{prop:'prop'}, test_bar-->{prop:'prop'}, test_test_bar-->{p:'p'}。是真的吗?
还有一个问题:
对于所有句法元素是否只存在一个environment record。这是声明性或对象环境记录。
关于环境记录的抽象方法
Sec 10.2.1 包含有关environment record 的抽象方法的信息。
方法:
CreateMutableBinding(N, D)
目的:
在环境记录中创建一个新的可变绑定。字符串 值 N 是绑定名称的文本。如果可选的布尔值 参数 D 为真,绑定可能随后被删除。
所以问题如下:
在这个方法的目的中绑定名称是什么意思?它是一对Identifier-->variable,比如我上面例子中的bar-->{prop:'prop'}?
【问题讨论】:
标签: javascript