제너레이터 객체는 제너레이터 함수로 부터 반환되며, 이터러블과 이터레이터를 모두 갖고 있는 객체 - mdn -
제너레이터 함수는 이터러블을 생성하는 함수로써, 기존 이터러블 생성 함수 보다 더 간편하게 이터러블을 구현하며 비동기 처리도 가능하다.
source code (피보나치)
source code (무한 이터러블)
제너레이터 함수의 경우 호출 하게 되면 반환 값으로 제너테이터를 반환한다. 제너레이터는 이터러블이면서 이터레이터인 객체이다. (source code 내 이터러블 함수와 동일하게 동작하는 것으로 확인이 가능하다.)
즉, Symbol.iterator와 next 메서드를 가지며 next 메서드를 호출하면 value, done 프로퍼티의 객체가 있는 이터레이터 리절트 객체를 반환한다.
또한, 제너레이터 함수는 function* 키워드로 선언하며 하나 이상의 yield 문을 포함 한다.
<aside> ✅ 정리
제너레이터 함수
바로 실행되지 않고 제너레이터 객체의 next 메서드를 호출 시 처음 만나는 yield 문까지 실행 후 일시 중단 되는 함수
제너레이터 객체