JavaScript의 이터레이터(Iterator)와 제네레이터(Generator)는 컬렉션을 순회하는 강력한 패턴입니다.
이를 활용하면 반복 가능한 데이터 구조를 효율적으로 순회할 수 있습니다.
이번 글에서는 이터레이터, 제네레이터, 이터러블을 쉽게 이해할 수 있도록 정리해보겠습니다.
이터레이터는 next()
메서드를 사용하여 값을 순차적으로 반환하는 객체입니다.
next()
메서드를 호출하면 { value, done }
객체를 반환
value
: 현재 반환된 값done
: 반복이 끝났는지 여부 (true
면 반복 종료)done === true
가 될 때까지 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 }
를 반환하여 순회가 끝났음을 알립니다.