2014-12-02 15 views
0

下面的代码返回true。如果是这种情况,为什么代码中的第4行出错?为什么不能像下面给出的那样访问数组?

var x = ['a', 'e', 'f']; 
x[2]; 
alert('2' in x); 
alert(x.2); 
+2

我敢打赌,这是同样的原因,你可以没有像var 2nd =“second”这样的东西。标识符不能以数字开头。 – 2014-12-02 05:32:27

回答

2

您可以用点语法访问的唯一属性名称是那些符合JavaScript的规则标识符名称(第一个字符是字母,_或$,而其余的字符是字母,数字,_,或$)。

你在那里有一个语法错误,这就是它出错的原因。

MDN

点标记

GET = object.property;
object.property = set;

属性必须是有效的JavaScript标识符,即包含下划线(“_”)和美元符号(“$”)且不能以数字开头的字母数字字符序列。例如,对象。$ 1是有效的,而object.1不是。

您可以使用方括号表示法与任何名称访问属性,所以下面的任一会回到你想要的物品:

x[2]; 
x["2"]; 
+0

函数foo(a,b){0}参数[1] = 2; alert(arguments.length); } foo(1);为什么它会提醒1而不是2。它的差异问题! – 2014-12-02 05:46:15

+0

@Joysamvedh如果你有一个不同的问题,你应该问它作为一个不同的问题,但答案是'arguments'不是一个数组,因此它不具有数组的所有行为。 – JLRishe 2014-12-02 05:48:15

相关问题