下面的代码返回true。如果是这种情况,为什么代码中的第4行出错?为什么不能像下面给出的那样访问数组?
var x = ['a', 'e', 'f'];
x[2];
alert('2' in x);
alert(x.2);
下面的代码返回true。如果是这种情况,为什么代码中的第4行出错?为什么不能像下面给出的那样访问数组?
var x = ['a', 'e', 'f'];
x[2];
alert('2' in x);
alert(x.2);
您可以用点语法访问的唯一属性名称是那些符合JavaScript的规则标识符名称(第一个字符是字母,_或$,而其余的字符是字母,数字,_,或$)。
你在那里有一个语法错误,这就是它出错的原因。
从MDN:
点标记
GET = object.property;
object.property = set;
属性必须是有效的JavaScript标识符,即包含下划线(“_”)和美元符号(“$”)且不能以数字开头的字母数字字符序列。例如,对象。$ 1是有效的,而object.1不是。
您可以使用方括号表示法与任何名称访问属性,所以下面的任一会回到你想要的物品:
x[2];
x["2"];
函数foo(a,b){0}参数[1] = 2; alert(arguments.length); } foo(1);为什么它会提醒1而不是2。它的差异问题! – 2014-12-02 05:46:15
@Joysamvedh如果你有一个不同的问题,你应该问它作为一个不同的问题,但答案是'arguments'不是一个数组,因此它不具有数组的所有行为。 – JLRishe 2014-12-02 05:48:15
我敢打赌,这是同样的原因,你可以没有像var 2nd =“second”这样的东西。标识符不能以数字开头。 – 2014-12-02 05:32:27