Widely available すべての主要ブラウザで対応済み。安心して使用可能。

概要

ジェネレータ関数は function* で宣言し、yield キーワードで値を逐次生成します。イテレータプロトコルに準拠し、for...of で反復できます。

対応ブラウザ

機能 デスクトップ モバイル
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
39
13
26
10
39
10

next() は Generator インスタンスのメソッドで、2 つのプロパティ done と value を持つオブジェクトを返します。 next メソッドに引数を提供して、ジェネレーターへ値を送ることもできます。

39
13
26
10
39
10

return() は Generator インスタンスのメソッドで、ジェネレーターの本体内で、現在の停止位置に return 文が挿入されたかのように振る舞い、これによりジェネレーターが完了します。また、try...finally ブロックと組み合わせることで、ジェネレーターがクリーンアップ処理を実行することができるようにします。

50
13
38
10
50
10

throw() は Generator インスタンスのメソッドで、ジェネレーターの本体内で、現在の停止位置に throw 文が挿入されたかのように振る舞い、ジェネレーターがエラー状態にあることを知らせ、エラーを処理したり、クリーンアップ処理を行って自分自身を閉じたりすることができるようにします。

39
13
26
10
39
10
その他

GeneratorFunction オブジェクトは、ジェネレーター関数のメソッドを提供します。JavaScript では、すべてのジェネレーター関数は実際には GeneratorFunction オブジェクトです。

39
13
26
10
39
10
ビルトインオブジェクト

GeneratorFunction() コンストラクターは、 GeneratorFunction オブジェクトを生成します。

39
13
26
10
39
10
その他

`関数*` 式

49
12
26
10
49
10
演算子
trailing comma

パラメータの末尾のカンマ

58
79
52
10
58
10
その他

yield 演算子は、ジェネレーター関数を一時停止したり再開したりするために使用します。

39
12
26
10
39
10

「収量*」

39
12
27
10
39
10

`関数*` ステートメント

39
13
26
10
39
10
ステートメント
IteratorResult object

`IteratorResult` オブジェクトをスローする代わりに

49
13
29
10
49
10
not constructable with new

「new」では構築できません (ES2016)

50
13
43
10
50
10
trailing comma in parameters

パラメータの末尾のカンマ

58
14
52
10
58
10
1+対応 (バージョン) 未対応 注釈あり サブ機能の解説は MDN Web Docs (CC BY-SA 2.5)
注釈 2件
実装メモ
  • Firefox 33 から、`yield` 式の解析が ES2015 仕様に準拠するように更新されました。
  • Firefox 29 から、完了したジェネレータ関数に対して `IteratorResult` オブジェクトが返されるようになりました。
注釈 1件
実装メモ
  • Firefox 33 から、`yield` 式の解析が ES2015 仕様に準拠するように更新されました。

基本構文

JAVASCRIPT
function* fibonacci() {
  let [a, b] = [0, 1];
  while (true) {
    yield a;
    [a, b] = [b, a + b];
  }
}

const fib = fibonacci();
fib.next().value; // 0
fib.next().value; // 1
fib.next().value; // 1
fib.next().value; // 2

ライブデモ

steprungenerator

Processing one timeStop, one timebetween per and to next. Value generatesimul-tion.. with yield

プレビュー全画面表示

nonenumbershi-kens

none to continueshi-kens from, main taiming in value 1 getout..

プレビュー全画面表示

de-ta. Sequentialprocessing

big de-tasett array, generator Usesplit to processing..

プレビュー全画面表示

実務での使いどころ

  • Generators の活用

    イテレータを生成する特殊な関数。yield で値を逐次返し、遅延評価を実現する。

注意点

  • 特になし。すべての主要ブラウザで安定して動作する。

アクセシビリティ

  • JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。

Powered by web-features