使用点表示法访问对象的数字属性

2022-03-14 00:00:00 javascript javascript-objects

为什么不能使用点表示法而不是方括号表示法访问此类似数组的对象的属性?

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.

解决方案

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

const v = a.0;

说明in the ECMAScript specification:

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

MemberExpression.标识符名称

并且标识符不能以数字as described here开头:

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

至于推理,将标识符名称仅由数字组成会使编写数字文字变得困难。异常可能只是为数组访问而设计的,但这会使语言变得更加复杂,并且背离了通用的C系列语法,而没有任何真正的好处。

相关文章