for...of 문으로 순회가능.
스프레드 문법과 디스트럭처링 할당의 대상으로 사용 가능.
자주 볼 수 있는 배열, Set, Map도 이터러블에 해당합니다. 한 마디로 딥카피 가능하고 순회가능한 객체를 이터러블이라고 합니다.
next
메서드를 소유한 객체.next메서드를 사용하여 이터러블을 순회.
이터레이터는 이터러블을 next()로 순회하는 특징이 있습니다. 이 말은 next()를 호출하지 않으면 호출한 시점까지만 순회하여 더 이상 데이터를 생상하지 않는다는 뜻입니다.
// 유사 배열 객체
const arrayLike = {
0: 1,
1: 2,
2: 3,
length: 3
}
for (let i = 0; i < arrayLike.length; i++) {
console.log(arrayLike[i]);
}
// 1 2 3
ES6이전에는 순회가능한 데이터 컬렉션들이 규약없이 각자 맞는 반복문을 구조를 가지고 사용했었습니다. ES6부터 데이터 공급 규약인 이터레이션 프로토콜을 지원하도록 구현되었습니다. 그 이유는 각자의 순회 방식을 가지면 다양한 데이터 공급자의 순회 방식을 모두 지원해야 하기 때문에 효율성에 적합하지 않아 하나로 통일 하게 되었습니다. 이처럼 이터레이션 프로토콜은 데이터 공급자(배열, set, map, string...)와 데이터 소비자(for...of, spread, distructuring...)를 이어주는 인터페이스같은 역할을 합니다.