제너레이터와 이터레이터

제너레이터 이터레이터이자 이터러블을 생성및 반환하는 함수

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;
}

odds

이용하여 홀수만 반환하여 순회하는 제너레이터 만들어보기

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}