使用点表示法访问数组或类数组对象的元素

eni*_*nix 0 javascript

它将是类似数组的对象,但为什么我们不能用点表示法而不是括号表示法来访问它?

function testArray (rat){
    return typeof arguments;
}

console.log(testArray("test")); // object

function testArray (rat){
    return arguments.0; //[0] is work
}

console.log(testArray("test")); // error
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 5

您的问题似乎是为什么我们不能使用像这样的点表示法访问数组和类数组元素

var v = a.0;
Run Code Online (Sandbox Code Playgroud)

然后,它在ECMAScript规范中描述:

点符号由以下语法转换解释:

MemberExpression.IdentifierName

标识符可能不以数字开头,如下所述:

IdentifierName ::

IdentifierStart

IdentifierName IdentifierPart

IdentifierStart ::

UnicodeLetter

$

_

\ UnicodeEscapeSequence

至于推理,使标识符名称只是由数字组成会使编写数字文字变得困难.可能只是为数组访问设计了一个异常,但这会使语言变得更加复杂并且脱离常见的C系列语法而没有任何实际的好处.