LoginSignup
1
0

【JavaScript】ジェネレータのreturnは省略したらどうなるのか

Posted at

returnの無いジェネレータ関数に出会ったので、そのジェネレータ関数をループした場合どのような挙動になるか調べてみた。

このようなジェネレータ関数があったとする。

function* gen() {
    yield 1;
    yield 2;
    // return;
    // ↑本来はこのようにreturnを書いてdone: trueであることを明示する
}

これをループして中身を取り出してみる。

for (const ite of get()) {
    console.log(ite)
}
// 1
// 2

ループは2回で終了。どうやらreturnを書かなくても終了判定されるらしい。

確かめるためにnext()で呼び出したらどうなるか試してみた。

const ite = gen()
console.log(ite.next())
// {value: 1, done: false}
console.log(ite.next())
// {value: 2, done: false}
console.log(ite.next())
// {value: undefined, done: true}

returnを書かなくてもyieldが最後まで到達したことを確認して自動的にdone: trueとされることを確認。

1
0
1

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
1
0