【JS】繰り返し処理を実行する関数
JS逆引きレシピ本、128(P207)。
関数とは基本、最後に戻り値を一回だけ返すものであるが、処理の過程で何度も戻り値を戻すためは、どうすればよいのか。
何度も戻り値を戻すためには、前回のエントリーでも書いたように、配列で戻せば良い。
【JS】関数から複数の値を返す - NACの勉強の経過を綴るところ
値が発生するたびに配列にpushしておき、最後に配列を戻せば良いはず。
function range(start, end) { let rangeArray = []; for(let i = start; i < end; i++) { rangeArray.push( i ); } return rangeArray; } console.log(range(5, 10)); // [5, 6, 7, 8, 9]
だが、今回、ジェネレーターという仕組みを知った。
全く知らないやり方である。
function* range(start, end) { for(let i = start; i < end; i++) { yield i; } } for (let num of range(5, 10)) { console.log(range(num)); // 5, 6, 7, 8, 9 }
サンプルスクリプトなどでこれが出てきたとして、すぐに分からないかもしれない。
特に、最初の「function*」。
functionのうしろに「*」がついている、これがジェネレーター関数の特徴。
わかる自信がない。
で、戻り値を返す際には、returnではなくて、yieldで返す。
ジェネレーター関数が戻す値をジェネレーターという。
うん、混乱してきた。
ジェネレーターってなんだ、というのは、もう少し順を追って書いたほうが良さそうなので、次のエントリーに回そう。