JavaScript의 이터레이터(Iterator)와 제네레이터(Generator)는 컬렉션을 순회하는 강력한 패턴입니다.

이를 활용하면 반복 가능한 데이터 구조를 효율적으로 순회할 수 있습니다.

이번 글에서는 이터레이터, 제네레이터, 이터러블을 쉽게 이해할 수 있도록 정리해보겠습니다.


이터레이터 (Iterator)

이터레이터는 next() 메서드를 사용하여 값을 순차적으로 반환하는 객체입니다.

이터레이터의 특징

이터레이터 직접 구현하기

const iterator = {
    current: 0,
    last: 5,
    next() {
        if (this.current <= this.last) {
            return { value: this.current++, done: false };
        } else {
            return { value: undefined, done: true };
        }
    }
};

console.log(iterator.next()); // { value: 0, done: false }
console.log(iterator.next()); // { value: 1, done: false }
console.log(iterator.next()); // { value: 2, done: false }
console.log(iterator.next()); // { value: 3, done: false }
console.log(iterator.next()); // { value: 4, done: false }
console.log(iterator.next()); // { value: 5, done: false }
console.log(iterator.next()); // { value: undefined, done: true }

📌 이 코드에서 next()를 호출할 때마다 값이 하나씩 증가하면서 done 상태가 업데이트됩니다.

마지막 값이 반환된 후에는 { value: undefined, done: true }를 반환하여 순회가 끝났음을 알립니다.