반복 방식 선택 기준

반복 계약은 데이터 구조와 실행 제어 수준으로 선택한다

for...of로 읽히게 할지, next를 직접 제어할지, yield로 흐름을 멈출지에 따라 구현 방식이 달라집니다.

Iterable

순회 가능한 객체

Symbol.iterator를 제공해 배열, 문자열, Map처럼 같은 문법으로 읽히게 한다.

Iterator

순회 상태를 가진 커서

next 호출마다 value와 done을 반환하며 현재 위치를 내부에 보관한다.

Generator

멈췄다 이어가는 함수

function*와 yield로 이터레이터를 쉽게 만들고 지연 생산 흐름을 표현한다.

데이터 구조 공개외부 사용자가 for...of를 기대한다면 이터러블 프로토콜을 구현한다.
무한/지연 값필요할 때만 값을 만들면 메모리 부담이 줄어 제너레이터가 잘 맞는다.
직접 제어중간에 멈추거나 외부 입력을 넣어야 하면 next 흐름을 명시한다.
단순 배열 처리이미 배열이면 map, filter, reduce가 더 읽기 쉬운 선택일 수 있다.
Symbol.iteratorIteratornext()value / done

핵심은 반복 문법 자체가 아니라 소비자가 값을 언제, 얼마나, 어떤 방식으로 꺼내야 하는지입니다.