3 回答
TA贡献1811条经验 获得超6个赞
好吧,这是我的答案-主要是因为我对其他(正确)答案中的引用不满意- []中属性名称的表达式始终被强制转换为字符串,并且此行为在规范中已得到很好的定义。因此,根据对所引用报价的解释,可以将其视为误导和/或不正确的。
但是,引言并不假定x[42]且x["42"]是不同的。它指出-在误导性地排除了其他原语和细节的情况下- 在正常属性解析下,只有字符串和数字才可用作 “哈希键”(实际上是属性名),并且在这种意义上,引用可以说是正确的。
这些规则来自标准ECMA-262 ECMAScript语言规范第5版(2009年12月)
在“ 11.2.1属性访问器”部分中(省略了生产规则):
生产的MemberExpression:MemberExpression [Expression]的计算如下:
令baseReference为评估MemberExpression的结果。
令baseValue为GetValue(baseReference)。
令propertyNameReference为计算Expression的结果。
设propertyNameValue为GetValue(propertyNameReference)。
调用CheckObjectCoercible(baseValue)。
设propertyNameString为ToString(propertyNameValue)。
如果要评估的语法产生包含在严格模式代码中,则使strict为真,否则使strict为假。
返回类型为Reference的值,其基值为baseValue,其引用名称为propertyNameString,其严格模式标志为strict。
快乐的编码。
添加回答
举报