파트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);