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
호출할 때마다 다음 피보나치 수를 반환하는 이터레이터를 만드세요.