数组的索引可以是数组(在Chrome中测试):
a = [1, 2, 3]
index = [1]
a[index] // returns 2
是否有关于此行为的官方文档?
答案 0 :(得分:4)
是否有关于此行为的官方文档?
12.3.2.1Runtime Semantics: Evaluation
定义以下3个步骤
3让propertyNameReference
成为评估Expression
的结果
4让propertyNameValue
成为? GetValue(propertyNameReference)
。
6让propertyKey
成为? ToPropertyKey(propertyNameValue)
。
然后7.1.14ToPropertyKey ( argument )
被定义为
key
成为? ToPrimitive(argument, hint String)
。Type(key)
为Symbol
,则为
一个。返回key
。ToString(key)
。这实际上意味着,除非表达式返回Symbol
- 否则它(键)将被转换为字符串。
答案 1 :(得分:3)
正如@Ryan和@ 4castle所提到的,javascript使用key
将[].join(',')
(在[]内部)转换为字符串。
您可以在此代码段中对其进行测试。
var abc = {
"1,2": "ddd"
};
console.log(abc[[1,2]]);

答案 2 :(得分:1)
a[index]
将对索引执行toString,并且由于index是一个数组,因此其字符串为index.join()
,使得输出a['1']
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors