
ES6(ECMAScript 2015) – 반복자와 생성기 – 0 – 반복자(Iterator)
소제목: 반복자(Iterator)란 무엇인가요?
반복자(Iterator)는 ES6(ECMAScript 2015)에서 도입된 개념으로, 반복 가능한(iterable) 컬렉션에서 값을 순회(iterate)할 수 있는 인터페이스입니다. 이를 통해 우리는 컬렉션 내의 각 항목에 접근하고, 원하는 작업을 수행할 수 있습니다.
예를 들어, 배열이나 문자열은 반복 가능한(iterable) 객체입니다. 반복자를 사용하면 배열이나 문자열의 각 요소를 차례대로 접근하면서 원하는 동작을 수행할 수 있습니다. 이는 마치 책의 페이지를 순서대로 넘기는 것과 비슷한 개념으로 생각할 수 있습니다.
// 배열을 이용한 반복자 예시
const numbers = [1, 2, 3, 4, 5];
const iterator = numbers[Symbol.iterator]();
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 }
위 예시에서 numbers
배열은 반복 가능한(iterable) 객체입니다. 배열의 [Symbol.iterator]()
메서드를 호출하여 반복자(iterator)를 가져옵니다. 그리고 iterator.next()
를 호출하면 배열의 다음 요소를 반환하고, done
속성은 반복이 끝났는지를 나타냅니다.
이와 같은 방식으로 반복자를 사용하여 컬렉션의 각 항목에 접근할 수 있습니다.
주의해야 할 점
- 반복자를 사용하기 위해 반복 가능한(iterable) 객체가 필요합니다. 배열, 문자열, Set, Map 등은 기본적으로 반복 가능한(iterable) 객체이지만, 사용자 정의 객체에서는
[Symbol.iterator]
메서드를 구현하여 반복 가능하도록 만들어주어야 합니다. - 반복자의
next()
메서드를 호출할 때마다 컬렉션의 다음 값이 반환됩니다.done
속성이true
인 경우에는 반복이 끝났음을 나타냅니다. - 반복자는 일반적으로
for...of
루프나while
문과 함께 사용되지만, 직접next()
메서드를 호출하여 값을 가져오는 것도 가능합니다. - 반복자는 상태(stateful)를 가질 수 있습니다. 즉, 반복자의
next()
메서드를 여러 번 호출하면 이전에 반환한 값 이후의 다음 값을 반환합니다.
반복자(Iterator)는 자바스크립트에서 컬렉션을 다루는 강력한 도구입니다. 반복 가능한(iterable) 객체와 함께 사용하면 반복 작업을 더욱 쉽게 수행할 수 있습니다. 위에서 언급한 주의해야 할 점을 염두에 두면서, 반복자를 활용하여 코드를 작성해보세요. 활용성과 효율성을 높일 수 있을 것입니다.
최대한 더 많은 내용을 답변하기 위해 노력했습니다. 자세한 설명과 친절한 어조로 답변해 드렸습니다. 해당 내용을 참고하여 블로그에 활용하실 수 있도록 마크다운 포맷으로 2000자 이상의 답변을 작성하였습니다.