2

这个问题是关于 JavaScript 语言基础的。为什么我们可以使用点 ( .) 运算符来访问对象的元素,但不能访问数组元素?

换句话说,为什么myArray.0在 JavaScript 中无效?

4

4 回答 4

3

使用点符号访问的 javascript 属性名称不能以数字开头。这只是 javascript 语法规则/语法的一部分。因此,即使点表示法可以用于数组,它也不会,因为数组索引是数字,并且以数字开头的属性名称不能用点表示法访问。

对于数组,您显然可以使用:

myArray[0]

但是,这也适用于以数字开头的对象属性,例如:

var x = {"12": "foo"};
alert(x["12"]);     // foo

而且,你不能这样做:

alert(x.12)

即使当x是一个对象并且"12"是该对象的合法属性。您必须使用x["12"]才能访问它。

于 2012-05-20T07:08:53.513 回答
0

为什么?因为那是javascript语法。就如此容易。

[x]用来获取 x 索引处的元素不是.x

于 2012-05-20T07:09:57.817 回答
0

点表示法中的属性名称必须是有效的 JavaScript id。任何不是有效 id 的对象属性名称都不能在点表示法中使用,无论是在对象还是数组中。对于此类属性名称,如果属性名称是字符串或转换为字符串,则必须使用 [] 表示法。

请注意,您可以将点节点与数组一起使用来获取其长度,例如,因为“长度”是一个有效的 id。

于 2012-05-20T07:18:27.710 回答
0

所以只是为了扩展 jfriend00 的回复-以下内容将起作用,因为属性名称以字母而不是数字开头

var test = new Array();
test['zero'] = "Testing";
alert(test.zero); // Does work
于 2012-05-20T07:22:22.100 回答