0

为什么我们不能用点符号而不是括号符号来访问这个类数组对象的属性?

function testArray(rat){
  return typeof arguments;
}

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

function testArray(rat){
  return arguments.0; // `arguments[0]` works.
}

console.log(testArray("test")); // Throws error.
4

2 回答 2

6

您的问题似乎是关于为什么我们不能使用这样的点符号访问数组和类似数组的元素:

const v = a.0;

在 ECMAScript 规范中有描述:

点符号通过以下句法转换来解释:

成员表达式 . 标识符名称

并且标识符可能不以此处描述的数字开头:

标识符名称::
IdentifierStart
IdentifierName IdentifierPart
标识符开始::
UnicodeLetter
$
_
\ UnicodeEscapeSequence

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

于 2013-07-16T14:52:03.990 回答
-1

你可以:

var arr = [];
arr.foo = 'foo';

console.log(arr.foo); // => 'foo'
于 2013-07-16T14:43:03.953 回答