0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ジェネレータ関数整理[JavaScript]

Last updated at Posted at 2025-08-23

基本知識

  • ジェネレータ:イテレータを生成する機能
  • イテレータ:リストや配列などの集まりに対し、一つずつアクセスするための仕組み
  • yield(明け渡すなどの意味を持つ):ジェネレータ関数の実行を一時停止、ジェネレータの next() メソッドを呼び出すことが出来るキーワード(?)
  • next().value:設定した関数を実行し、配列(リスト)内の次の値を呼び出すメソッド
  • function*:ジェネレータ関数の定義はこのようにアスタリスクをつけるみたい

サンプルコード

単一の設定の場合

function* generatorFuntion(item) {
  yield item; // 値を保持
  yield item * 10; // 呼び出す時に*10して返すための設定
}

const test = generatorFuntion(10);

 // generatorFuntionで取得した最初の値を返す
console.log(test.next().value);
// 10

// generatorFuntionの値に*10した値を返す
console.log(test.next().value); 
// 100

// 1つしか設定していないのでundefinedが返ってくる
console.log(test.next().value); 
// undefined

複数の設定で返す場合

function* loopBack() {
  let index = 10;
  // whileはtrueの間、処理を繰り返し続ける
  while (true) { 
    yield index--; // next().valueの数だけ‐1した値を返す
  }
}

const gen = loopBack();

console.log(gen.next().value); // 10
console.log(gen.next().value); // 9
console.log(gen.next().value); // 8
console.log(gen.next().value); // 7
console.log(gen.next().value); // 6
console.log(gen.next().value); // 5

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?