我未能找到关于如何/为何如何工作的文档:
const data = {one: 1, two: 2}
const key = ['one']
data[key[0]] // 1
data[key] // 1
data[[key]] // 1
data[[[key]]] // 1
data[[[[key]]]] // 1
data[['one', 'two']] // undefined
什么允许任意数量的方括号围绕键并仍然成功找到对象中的键? array.length === 1
时是否有特定行为?如果是这样,我在哪里可以找到文件或清晰度?
答案 0 :(得分:4)
使用object[key]
括号表示法访问属性时,key
将转换为字符串。*数组的字符串表示形式是与,
连接的元素的字符串表示形式。对于单元素数组,它与其唯一元素的字符串表示形式相同。
const foo = {'a,b': 2};
console.log(foo[['a', 'b']]); // 2;
*或符号。
答案 1 :(得分:1)
使用方括号访问属性时,键始终转换为字符串。如果将数组转换为字符串,则结果与调用数组上的join()
方法相同。因此,将一个数组(只包含一个元素,即一个字符串)转换为字符串会导致该元素本身。但是,当数组包含两个字符串元素(如['one', 'two']
)时,将其转换为字符串会产生'one,two'
,而data
变量不包含该键。