이터러블(Iterable)
2026년 5월 17일
- 이터러블(Iterable)은
Symbol.iterator메서드를 구현하여for...of루프나 스프레드 연산자(...)로 순회할 수 있는 객체다. - 내장 이터러블:
Array,String,Map,Set,arguments,NodeList등이 있다. - 이터러블 프로토콜(Iterable Protocol)과 이터레이터 프로토콜(Iterator Protocol)이 분리되어 있다.
이터러블 vs 이터레이터
| 구분 | 조건 | 반환값 |
|---|---|---|
| 이터러블(Iterable) | Symbol.iterator 메서드를 가짐 | next()를 가진 이터레이터 |
| 이터레이터(Iterator) | next() 메서드를 가짐 | { value, done } 객체 |
| 이터러블 이터레이터 | 둘 다 만족 | 자기 자신을 반환 |
JavaScript
for...of 동작 원리
for...of는 내부적으로[**Symbol**](/vault/symbol).iterator를 호출하여 이터레이터를 얻고,done이true가 될 때까지next()를 반복 호출한다.
JavaScript
커스텀 이터러블 구현
[Symbol.iterator]()메서드를 직접 구현하여 어떤 객체든 이터러블로 만들 수 있다.
JavaScript
스프레드와 구조 분해 할당
- 이터러블은
...스프레드 연산자와 구조 분해 할당에도 활용된다.
JavaScript
관련 개념
- Symbol —
Symbol.iterator는 이터러블 프로토콜의 핵심 심볼이다. - 제너레이터(Generator) —
function*로 선언하며, 자동으로 이터러블 이터레이터를 구현한다. - 배열(Array) — 가장 대표적인 내장 이터러블이다.