这个问题是关于 JavaScript 语言基础的。为什么我们可以使用点 ( .
) 运算符来访问对象的元素,但不能访问数组元素?
换句话说,为什么myArray.0
在 JavaScript 中无效?
这个问题是关于 JavaScript 语言基础的。为什么我们可以使用点 ( .
) 运算符来访问对象的元素,但不能访问数组元素?
换句话说,为什么myArray.0
在 JavaScript 中无效?
使用点符号访问的 javascript 属性名称不能以数字开头。这只是 javascript 语法规则/语法的一部分。因此,即使点表示法可以用于数组,它也不会,因为数组索引是数字,并且以数字开头的属性名称不能用点表示法访问。
对于数组,您显然可以使用:
myArray[0]
但是,这也适用于以数字开头的对象属性,例如:
var x = {"12": "foo"};
alert(x["12"]); // foo
而且,你不能这样做:
alert(x.12)
即使当x
是一个对象并且"12"
是该对象的合法属性。您必须使用x["12"]
才能访问它。
为什么?因为那是javascript语法。就如此容易。
你[x]
用来获取 x 索引处的元素不是.x
点表示法中的属性名称必须是有效的 JavaScript id。任何不是有效 id 的对象属性名称都不能在点表示法中使用,无论是在对象还是数组中。对于此类属性名称,如果属性名称是字符串或转换为字符串,则必须使用 [] 表示法。
请注意,您可以将点节点与数组一起使用来获取其长度,例如,因为“长度”是一个有效的 id。
所以只是为了扩展 jfriend00 的回复-以下内容将起作用,因为属性名称以字母而不是数字开头
var test = new Array();
test['zero'] = "Testing";
alert(test.zero); // Does work