자바스크립트 제너레이터 : JS도 제너레이터가 있었네…?

들어가며

“자바스크립트 제너레이터”는 반복 가능한 데이터 시퀀스를 생성하는 강력한 방법을 제공합니다.

시퀀스를 생성한다는 의미는 배열과 같은 데이터를 생성하고 for문으로 돌리는 작업을 제너레이터를 사용해서 구현 할 수 있는 건데요. 배열과 for문으로 구현 가능하다면 제너레이터는 어떤 이점이 있길래 사용하는 걸까요?

이번 포스트에서는 “제너레이터”가 무엇인지, 자바스크립트에서 어떻게 작동하고 사용할 수 있는지를 정리해보았습니다.

자바스크립트 제너레이터 란 무엇입니까?

JavaScript 제너레이터 실행을 일시 중지하고 재개할 수 있는 특수 함수로, 시간이 지남에 따라 일련의 값을 생성할 수 있습니다.

실행이 완료되고 단일 값을 반환하는 일반 함수와 달리 제너레이터는 한 번에 하나씩 여러 값을 생성할 수 있으므로 지연 평가와 효율적인 메모리 사용을 가능하게 만들어 줍니다.

제너레이터 함수 만들기

제너레이터 함수를 정의하려면 함수가 제너레이터임을 JavaScript에 알려주는 function* 구문을 사용합니다.

제너레이터 함수 내에서 ‘yield‘ 키워드를 사용하여 일련의 값을 생성합니다.

다음은 무한한 피보나치 수열을 생성하는 제너레이터 함수의 간단한 예입니다.

function* fibonacci() {
    let prev = 0, curr = 1;
    while (true) {
        yield curr;
        [prev, curr] = [curr, prev + curr];
    }
}

제너레이터 함수를 정의한 후에는 이를 사용하여 for…of 루프를 사용하거나 제너레이터에서 next() 메서드를 수동으로 호출하여 값을 생성할 수 있습니다.

‘fibonacci()’ 제너레이터를 사용하여 처음 10개의 피보나치 수를 생성하는 방법은 다음과 같습니다.

const gen = fibonacci();
for (let i = 0; i < 10; i++) {
    console.log(gen.next().value);
}

마치며

파이썬과 유사하게 함수의 반환을 yield로 합니다. 또한 함수를 변수로 받아 제너레이터를 생성하는 것도 파이썬과 유사합니다.

마지막으로 next()를 이용해서 제너레이터를 호출하는 것도 유사합니다.

한 번 익혀둔다면 파이썬과 자바스크립트 모두에서 어렵지 않게 제너레이터를 활용할 수 있을 것 같습니다.

참고하면 좋은 글

Leave a Comment

목차