https://qiita.com/uhyo/items/cc68e66e4008a66f3d94
しかし、イテレータには配列には真似できない点がひとつあります。それは無限イテレータを作れるという点です。
引用 : https://qiita.com/kura07/items/d1a57ea64ef5c3de8528
// 1~20の数を順番に取り出す
var ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
for(var num of ary) console.log(num);
↓
// ジェネレータ関数を使って1~20の数を順番に取り出す
// ジェネレータ関数(function* と書きます)
function* generate20Number(from,to) {
while(from <= to) yield from++;
}
// ジェネレータ
const generator = generate20Number(1, 20);
for(var num of generator) console.log(num);
https://ja.javascript.info/generators
ジェネレータ関数は通常の関数とは異なり、コードを実行しないことです。それらは “ジェネレータ工場(ファクトリー)” として機能します。 function* の実行はジェネレータを返し、その後、ジェネレータに値を要求します。
function* generate3Chars(from,to) {
yield* ['aaa','bbb','ccc'];
}
const gen = generate3Chars(1, 20);
console.log( ...gen ); // aaa, bbb, ccc