当我有这个时:
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
答案 0 :(得分:3)
JS引擎正在处理下划线,并将密钥从1_1
转换为11
。但是,如果将其用引号引起来,它将起作用:
hash = {"1_1": 'foo' }
//{1_1: "foo"}
进一步阅读:Which characters are valid/invalid in a JSON key name?