假设我有一个对象
obj = {
a : 1
}
我可以通过a
访问属性obj["a"]
,但我也可以通过obj[["a"]]
访问它。那怎么可能?
对象键始终是字符串(或者很少是符号)。当你做
obj[<expression>]
解释器将尝试将expression
转换为有效键(如果尚未输入的话)。在这种情况下,将["a"]
转换为字符串会导致"a"
,因此obj["a"]
和obj[["a"]]
都可以工作。
((当数组隐式转换为基本类型时,如此处所示,它用逗号将.join
和["a"].join(',') === "a"
进行运算]