JS为什么允许使用数组作为键的属性访问?

问题描述 投票:4回答:1

假设我有一个对象

obj = {
  a : 1
}

我可以通过a访问属性obj["a"],但我也可以通过obj[["a"]]访问它。那怎么可能?

javascript javascript-objects
1个回答
6
投票

对象键始终是字符串(或者很少是符号)。当你做

obj[<expression>]

解释器将尝试将expression转换为有效键(如果尚未输入的话)。在这种情况下,将["a"]转换为字符串会导致"a",因此obj["a"]obj[["a"]]都可以工作。

((当数组隐式转换为基本类型时,如此处所示,它用逗号将.join["a"].join(',') === "a"进行运算]


推荐问答