arguments[Symbol.iterator]()
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2016年7月以降、すべてのブラウザーで利用可能です。
[Symbol.iterator]() は arguments オブジェクトのメソッドで、イテレータープロトコルを実装し、 arguments オブジェクトが反覆可能を期待するほとんどの構文(スプレッド構文や for...of ループなど)で利用できるようにするためのものです。これは、 arguments オブジェクトのそれぞれのインデックスの値を返す 配列イテレーターオブジェクト を返します。
このプロパティの初期値は、 Array.prototype.values プロパティの初期値と同じ関数オブジェクトです(また、Array.prototype[Symbol.iterator]() とも同じです)。
構文
js
arguments[Symbol.iterator]()
引数
なし。
返値
Array.prototype.values() と同じ返値です。 arguments オブジェクトのそれぞれのインデックスの値を返す新しい反復可能イテレーターオブジェクトです。
例
>for...of ループを用いた反復処理
このメソッドを直接呼び出す必要はほとんどないことに注意してください。[Symbol.iterator]() メソッドが存在するので、 arguments オブジェクトは反復可能オブジェクトであり、for...of ループなどの同様に反復可能な構文は自動的にこのメソッドを呼び出し、ループ処理用のイテレーターを取得します。
js
function f() {
for (const letter of arguments) {
console.log(letter);
}
}
f("w", "y", "k", "o", "p");
イテレーターを手動で手繰る
返されたイテレーターオブジェクトの next() メソッドを手動で呼び出すことで、反復処理を最大限に制御することもできます。
js
function f() {
const argsIter = arguments[Symbol.iterator]();
console.log(argsIter.next().value); // w
console.log(argsIter.next().value); // y
console.log(argsIter.next().value); // k
console.log(argsIter.next().value); // o
console.log(argsIter.next().value); // p
}
f("w", "y", "k", "o", "p");
仕様書
| 仕様書 |
|---|
| ECMAScript® 2027 Language Specification> # sec-createunmappedargumentsobject> |
| ECMAScript® 2027 Language Specification> # sec-createmappedargumentsobject> |