← 返回首页
arguments[Symbol.iterator]() - JavaScript | MDN

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

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]() とも同じです)。

In this article

構文

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");

仕様書

Specification
ECMAScript® 2027 Language Specification
# sec-createunmappedargumentsobject
ECMAScript® 2027 Language Specification
# sec-createmappedargumentsobject

ブラウザーの互換性

Enable JavaScript to view this browser compatibility table.

関連情報