arguments[Symbol.iterator]()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年7月.
[Symbol.iterator]() は arguments オブジェクトのメソッドで、イテレータープロトコルを実装し、 arguments オブジェクトが反覆可能を期待するほとんどの構文(スプレッド構文や for...of ループなど)で利用できるようにするためのものです。これは、 arguments オブジェクトのそれぞれのインデックスの値を返す 配列イテレーターオブジェクト を返します。
このプロパティの初期値は、 Array.prototype.values プロパティの初期値と同じ関数オブジェクトです(また、Array.prototype[Symbol.iterator]() とも同じです)。
構文
arguments[Symbol.iterator]()
引数
なし。
返値
Array.prototype.values() と同じ返値です。 arguments オブジェクトのそれぞれのインデックスの値を返す新しい反復可能イテレーターオブジェクトです。
例
>for...of ループを用いた反復処理
このメソッドを直接呼び出す必要はほとんどないことに注意してください。[Symbol.iterator]() メソッドが存在するので、 arguments オブジェクトは反復可能オブジェクトであり、for...of ループなどの同様に反復可能な構文は自動的にこのメソッドを呼び出し、ループ処理用のイテレーターを取得します。
function f() {
for (const letter of arguments) {
console.log(letter);
}
}
f("w", "y", "k", "o", "p");
イテレーターを手動で手繰る
返されたイテレーターオブジェクトの next() メソッドを手動で呼び出すことで、反復処理を最大限に制御することもできます。
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");
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-createunmappedargumentsobject> |
| ECMAScript® 2026 Language Specification> # sec-createmappedargumentsobject> |
ブラウザーの互換性
Loading…