패스잇
프론트엔드 개발 · 심화

JavaScript의 이터레이터(Iterator)와 제너레이터(Generator)에 대해 설명해주세요.

힌트 · Symbol.iterator, next(), yield 키워드를 설명해보세요.

이터레이션 프로토콜next()doneyield상태 관리

모범답안

면접관님, JavaScript의 이터레이터와 제너레이터에 대해 설명드리겠습니다.

이터레이터는 이터레이션 프로토콜을 따르는 객체입니다. 이터레이션 프로토콜은 next() 메서드를 통해 순차적으로 값에 접근하는 방식을 정의합니다. next() 메서드는 { value: 값, done: 완료여부 } 형태의 객체를 반환합니다. donetrue가 되면 순회가 종료됩니다.

제너레이터는 이터레이터를 생성하는 함수입니다. 함수 내부에 yield 키워드를 사용하여 값들을 순차적으로 반환할 수 있습니다. 제너레이터 함수를 호출하면 이터레이터 객체가 반환되고, next() 메서드를 호출할 때마다 yield 키워드에서 값을 반환하며 함수 실행이 일시 중단됩니다. 제너레이터는 내부 상태를 유지하기 때문에 복잡한 이터레이션 로직을 간결하게 구현할 수 있다는 장점이 있습니다.

예를 들어, 다음과 같은 제너레이터 함수를 만들 수 있습니다.

function* numberGenerator() {
  yield 1;
  yield 2;
  yield 3;
}

const iterator = numberGenerator();
console.log(iterator.next()); // { value: 1, done: false }

이처럼 제너레이터는 이터레이터를 쉽게 생성하고 관리할 수 있도록 도와주는 강력한 기능입니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 JavaScript 면접 질문

← JavaScript 면접 질문 전체 보기