MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

Symbol.iterator

よく知られた Symbol.iterator シンボルはオブジェクトに対するデフォルトイテレーターを指定します。for...of によって使われます。

Symbol.iterator のプロパティ属性
書込可能 不可
列挙可能 不可
設定可能 不可

説明

(for..of ループの始まりのときのように) オブジェクトが反復される必要があるときはいつでも、@@iterator メソッドは引数なしで呼ばれます。返された iterator は反復される値を取得するために使用されます。

デフォルトの反復動作を持っている組み込み型もあれば、(Object のような) 持っていない型もあります。@@iterator メソッドをもつ組み込み型は下記の通りです。:

詳細については、反復処理プロトコルも確かめて下さい。

ユーザ定義イテレーター

このように独自のイテレーターを作ることができます。:

var myIterable = {}
myIterable[Symbol.iterator] = function* () {
    yield 1;
    yield 2;
    yield 3;
};
[...myIterable] // [1, 2, 3]

非整形イテレーター

iterable の @@iterator メソッドがイテレータオブジェクトを返さない場合、それは非整形イテレータです。そのように使用すると、実行時例外またはバグが発生する可能性があります:

var nonWellFormedIterable = {}
nonWellFormedIterable[Symbol.iterator] = () => 1
[...nonWellFormedIterable] // TypeError: [] is not a function

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Symbol.iterator の定義
標準 初期定義。
ECMAScript Latest Draft (ECMA-262)
Symbol.iterator の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 43 36 (36) 未サポート 30 10
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 未サポート 未サポート 36.0 (36) 未サポート 未サポート 未サポート

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: YuichiNukiyama, shide55
 最終更新者: YuichiNukiyama,