我正在阅读《JavaScript权威指南》,看到了一段话,引用如下:
如果使用一个非负整数的字符串作为数组索引,它会像数组索引一样而不是对象属性进行处理。
因此,类似
我有点冒险,尝试了
以下是我的代码。我尝试在node和浏览器中运行它。
如果使用一个非负整数的字符串作为数组索引,它会像数组索引一样而不是对象属性进行处理。
因此,类似
a["4"]
的内容将被存储在索引为5的位置,而类似a["-1.26"]
的内容将被存储为属性"1.26"
。我有点冒险,尝试了
a["02"]=2;
。现在我可以设置它,检索它,但它既没有被设置为a[2]
(基本上是a[parseInt("02")]
),也无法在打印数组时获取它。以下是我的代码。我尝试在node和浏览器中运行它。
> a[3] = 3;
3
> a["-1.2"] = 10;
10
> a
[ , , , 3, '-1.2': 10 ]
> a["02"] = 2;
2
> a
[ , , , 3, '-1.2': 10 ]
> a["02"]
2
> a.length
4
我只是想了解到底发生了什么。
/^0|[1-9][0-9]*$/
的内容都被视为数字。a["+1"]
并不等同于a[1]
。 - xanatos