为什么dot运算符无法访问数组元素?

时间:2012-05-20 07:07:22

标签: javascript

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

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

4 个答案:

答案 0 :(得分:3)

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

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

myArray[0]

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

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

而且,你做不到:

alert(x.12)

即使x是对象,"12"是对象的合法属性。您必须使用x["12"]来访问它。

答案 1 :(得分:0)

为什么呢?因为那是javascript语法。就这么简单。

您使用[x]来获取x索引处的元素.x

答案 2 :(得分:0)

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

请注意,您可以使用带阵列的点编码来获取其长度,例如,因为' length'是一个有效的身份。

答案 3 :(得分:0)

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

var test = new Array();
test['zero'] = "Testing";
alert(test.zero); // Does work