当键是具有非底数(1_1)的数字时,访问哈希值

时间:2019-06-21 14:36:13

标签: javascript javascript-objects

当我有这个时:

hash = { 1_1: 'foo' }

为什么hash[1_1]给出undefined,而例如:

hash = { 1: 'foo' }

hash[1]返回正确的值。

两个对象键都是字符串:

typeof Object.keys(hash)[0]  /// -> string

那为什么不将hash[1_1]转换为字符串呢?

p.s。我在Chrome上进行了测试,看起来它已经支持numeric separators

1 个答案:

答案 0 :(得分:3)

JS引擎正在处理下划线,并将密钥从1_1转换为11。但是,如果将其用引号引起来,它将起作用:

hash = {"1_1": 'foo' }

//{1_1: "foo"}

进一步阅读:Which characters are valid/invalid in a JSON key name?