파트3. 제너레이터와 이터레이터 - ChoDragon9/posts GitHub Wiki
제너레이터/이터레이터
- 제너레이터 : 이터레이터이자 이터러블을 생성하는 함수
function *gen() {
yield 1;
yield 2;
yield 3;
}
const iter = gen();
console.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: undefined, done: true}
return 값을 사용하면 마지막값으로 사용가능합니다.
function *gen() {
yield 1;
yield 2;
yield 3;
return 4;
}
const iter = gen();
console.log(iter.next()); // {value: 1, done: false}
console.log(iter.next()); // {value: 2, done: false}
console.log(iter.next()); // {value: 3, done: false}
console.log(iter.next()); // {value: 4, done: true}
odds
function *odds(limit) {
for(let i = 1; i <= limit; i += 2) {
yield i;
}
}
console.log(...odds(9))
for of, 전개 연산자, 구조 분해, 나머지 연산자
console.log([...odds(7), ...odds(5)])
const [head, ...tail] = odds(7);
console.log(head, tail);