function *gen(){
yield 1;
yeild 2;
return 100; // done 이 true 일 때의 value값(순회할 때는 반환하지 않는다.)
}
const iter = gen();
iter[Symbol.iterator]() == iter // true
iter.next();
iter.next();
for (const g of gen()) console.log(g);
제너레이터 문장을 이용해 어떤 문장, 값도 순회 가능하도록 만들 수 있다.
function *infinity(i=0){
while (true) yield i++;
}
function *limit(l, iter){
for (const i of iter){
yield i;
if (i === l) return;
}
}
//odd
function *odd(l){
let =0;
for (const o of limit(l, infinity())){
if(o % 2) yield o;
}
}
const o = odd(10);
o.next();
o.next();
for (const o of odd(10)) log(o)
console.log(...odd(10))
[...odd(10)]
const [head, ...tail] = odd(10);
const [a, b, ...rest] = odd(10);