JavaScript 제너레이터 내부의 루프

제너레이터 내부에서는 루프를 사용할 수 있습니다. 이때 yield를 사용하여 루프를 일시 정지할 수 있습니다. 예제를 통해 살펴보겠습니다. 각 반복마다 루프를 일시 정지해 보겠습니다:

javascriptfunction *func() {
  for (let i = 1; i <= 3; i++) {
    yield i;
  }
}

이터레이터를 얻습니다:

javascriptlet iter = func();

우리 이터레이터의 작동을 확인해 보겠습니다:

javascriptconsole.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}
Задание 1

10부터 0까지의 숫자를 반환하는 이터레이터를 만드세요.

Задание 2

숫자를 매개변수로 받는 제너레이터를 만드세요. 이터레이터를 호출할 때마다 숫자가 0에 도달할 때까지 1씩 감소하도록 하세요.

Задание 3

숫자를 매개변수로 받는 제너레이터를 만드세요. 이터레이터를 호출할 때마다 숫자가 절반으로 줄어들고 결과를 반환하도록 하세요. 숫자가 1보다 작아질 때까지 이렇게 진행하세요.

Задание 4

호출할 때마다 다음 2의 거듭제곱을 반환하는 이터레이터를 만드세요.

Задание 5

호출할 때마다 다음 피보나치 수를 반환하는 이터레이터를 만드세요.