3 回答

TA貢獻(xiàn)1811條經(jīng)驗 獲得超6個贊
好吧,這是我的答案-主要是因為我對其他(正確)答案中的引用不滿意- []中屬性名稱的表達(dá)式始終被強(qiáng)制轉(zhuǎn)換為字符串,并且此行為在規(guī)范中已得到很好的定義。因此,根據(jù)對所引用報價的解釋,可以將其視為誤導(dǎo)和/或不正確的。
但是,引言并不假定x[42]且x["42"]是不同的。它指出-在誤導(dǎo)性地排除了其他原語和細(xì)節(jié)的情況下- 在正常屬性解析下,只有字符串和數(shù)字才可用作 “哈希鍵”(實際上是屬性名),并且在這種意義上,引用可以說是正確的。
這些規(guī)則來自標(biāo)準(zhǔn)ECMA-262 ECMAScript語言規(guī)范第5版(2009年12月)
在“ 11.2.1屬性訪問器”部分中(省略了生產(chǎn)規(guī)則):
生產(chǎn)的MemberExpression:MemberExpression [Expression]的計算如下:
令baseReference為評估MemberExpression的結(jié)果。
令baseValue為GetValue(baseReference)。
令propertyNameReference為計算Expression的結(jié)果。
設(shè)propertyNameValue為GetValue(propertyNameReference)。
調(diào)用CheckObjectCoercible(baseValue)。
設(shè)propertyNameString為ToString(propertyNameValue)。
如果要評估的語法產(chǎn)生包含在嚴(yán)格模式代碼中,則使strict為真,否則使strict為假。
返回類型為Reference的值,其基值為baseValue,其引用名稱為propertyNameString,其嚴(yán)格模式標(biāo)志為strict。
快樂的編碼。
添加回答
舉報