質問: このページで下記のように掲載されていますが、どの部分がプロパティに該当するのでしょうか? > > **argumentsプロパティ** > > arguments[@@iterator] > > > --- ・@@iteratorがプロパティ? --- ・arguments.@@iteratorではなぜ駄目? --- ・関数内で関数の引数を参照する際、arguments[2]のように参照するかと思いますが、これは、実際には、@@iteratorプロパティにアクセスしている、ということなのでしょうか? ・それとも、@@iteratorはループで使用するものなので、arguments[2]とは関係ない?
回答: これは、ES6で追加された`Iterable protocol`の実装です(MDN)。実際には、`arguments[Symbol.iterator]`という形で参照します。 「@@iterator」という表記はあくまで便宜上のもので、既存のJavaScriptに影響を与えないように、Symbolという特殊な手法でしかアクセスできないようになっています(**ドットアクセスも不可能です**)。