이터러블 객체란 반복가능한 객체를 뜻하는 것으로 Symbol.iterator 메서드를 소유한 객체를 말한다.
자바스크립트에선 기본적으로 Symbol.iterator메서드를 소유한 객체를 다음과 같이 정의한다.
Array(배열) | 배열의 각 요소를 순회 |
---|---|
String(문자열) | 문자열의 각 문자를 순회함 |
TypedArray(타입화 배열) | ArrayBuffer를 기반으로 하는 정적 크기의 배열(Int8Array, Uint8Array, Uint8ClampedArray, Int16Array |
Map | 키-값 쌍으로 저장하는 자료형 |
이 외에도 Set이나 Arguments 객체가 있지만 중요한건 아니니 일단 넘어가고
이터러블 객체라는건 이터레이터 메서드를 가진 객체를 말하고
그러 for…of
문법을 사용할 수 있다는 뜻이다.
이터레이터 메서드의 구성은 다음과 같다.
{ value: 값, done: true/false }
const arr = [1, 2];
const iter = arr[Symbol.iterator]();
console.log(iter.next());
//{value: 1, done: false}
console.log(iter.next());
//{value: 2, done: false}
console.log(iter.next());
//{value: undefined, done: true}
next 메서드가 리턴하는 객체를 이터레이터 객체라고 한다.
for of는 이터레이터 객체를 호출하여 이터러블 객체를 순회한다.
for
부터 살펴보자면 되게 간단하다. for
문은 기본적으로 반복 끝 값을 지정해줘야 한다.
length를 사용하면 간단하지만 이 문법조차 길다.
그래서 for…in
반복문을 가장 많이 사용하게 되는데
for…in
의 경우 열거형(Enumerater) 데이터는 모두 순회할 수 있다. 즉 객체라면 뭐든지 순회가 가능하다.