【发布时间】:2020-03-12 09:45:05
【问题描述】:
假设我有一个对象
obj = {
a : 1
}
我可以通过obj["a"] 访问属性a,但我也可以通过obj[["a"]] 访问它。这怎么可能?
【问题讨论】:
标签: javascript javascript-objects
假设我有一个对象
obj = {
a : 1
}
我可以通过obj["a"] 访问属性a,但我也可以通过obj[["a"]] 访问它。这怎么可能?
【问题讨论】:
标签: javascript javascript-objects
对象键总是字符串(或者,很少是符号)。当你这样做时
obj[<expression>]
解释器将尝试将expression 转换为有效的密钥,如果它还不是一个。在这种情况下,将["a"] 转换为字符串会产生"a",因此obj["a"] 和obj[["a"]] 都可以工作。
(当一个数组被隐式转换为一个原始数组时,就像这里一样,它得到.join由逗号表示,["a"].join(',') === "a")
【讨论】:
[[[["a"]]]] == "a" 计算结果为 true