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 仕様で説明されています。

ドット表記は、次の構文変換によって説明されます。

MemberExpression . 識別子名

また、ここで説明されているように、識別子は数字で始まることはできません。

識別子名::
IdentifierStart
IdentifierName IdentifierPart
識別子開始::
UnicodeLetter
$
_
\ UnicodeEscapeSequence

理由としては、識別子の名前を数字だけにすると数字リテラルを書くのが難しくなるからです。例外はおそらく配列アクセスのためだけに設計された可能性がありますが、それは言語をより複雑にし、実際の利益なしに一般的な C ファミリの構文から逸脱したことになります。

于 2013-07-16T14:52:03.990 に答える