제너레이터 이터레이터이자 이터러블을 생성및 반환하는 함수
function *gen(){ // * 을 붙히면 제너레이터가 된다.
yield 1;
yield 2;
yield 3;
}
let iter = gen();
log(iter[Symbol.iterator]()==iter) // true
log(iter.next()); // {value: 1, done: false}
for(const a of gen()) log(a) // 1,2,3
⭐ 제너레이터는 순회 할 값을 문장으로 표현하는 것이라고 할 수 있다.
function *gen(){
yield 1;
if(false) yield 2;
yield 3;
}
function *odds(){
yield 1;
yield 3;
yield 5;
}
let iter2 = odds();
log(iter2.next()); //1
log(iter2.next()); //3
log(iter2.next()); //5
function *odds(l){
for(let i = 0; i < l; i++){
if(i%2) yield i;
}
}
let iter2 = odds(10);
log(iter2.next()); //1
log(iter2.next()); //3
log(iter2.next()); //5
log(iter2.next()); //7
log(iter2.next()); //9
log(iter2.next()); //undefined
function *infinity(i = 0){
while(true) yield i++;
}
let iter3 = infinity();
log(iter3.next()); //{value: 0, done: false}
log(iter3.next()); //{value: 1, done: false}
...
log(iter3.next()); //{value: n, done: false}