라벨이 이터레이터(Iterator)인 게시물 표시

[JavaScript] 이터레이터(Iterator),이터러블(Iterable)

이터러블(Iterable, 순회 가능한 자료구조) 이터러블은 Symbol.iterator 메소드를 구현하거나 프로토타입 체인에 의해 상속한 객체를 말한다. Symbol.iterator 메소드는 이터레이터를 반환한다. 이터러블은 for…of 문으로 순회할 수 있으며 이외에도 spread 문법, 디스트럭쳐링 할당, Map과 Set의 생성자에도 사용된다. 단순하게 '자료구조를 반복할 수 있게 하는 객체' 정도로 이해해 본다. Array, String, Map, Set, DOM이 이터러블이고, 이런 것을 반복할 수 있게 하는 것이 이터레이터다. 이터레이터(Iterator, 반복자) 이터러블/이터레이터 프로토콜은 next 메소드를 사용하여 이터러블을 순회하며 value, done 프로퍼티를 갖는 이터레이터 객체를 반환한다. 이 규약을 준수한 객체가 이터레이터이다. 이터러블/이터레이터 프로토콜을 준수한 이터러블은 Symbol.iterator 메소드를 소유한다. 이 메소드를 호출하면 이터레이터를 반환한다. 반환된 이터레이터를 next 메소드를 사용하여 호출하면 이터러블을 순차적으로 한 단계씩 순회하며 value, done 프로퍼티를 갖는 객체를 반환한다. 순회하는동안 value값과 done: false를 반환하다가 순회가 완료되면 value: undefined, done: true를 반환한다. 여기서 done 프로퍼티는 이터러블의 순회 완료 여부를 반환하는것이다. 과정 iterable[Symbol.iterator]() ---> iterator ---> iterator.next() ---> return { value, done } 이터러블(iterable, 순회 가능한 자료구조)은 Array, String, Map, Set, DOM구조이며, [Symbol.iterator]() 메서드를 사용하여 iterator를 생성하고 next() 메서드로 값을 하나씩 순회할 수 있다. [Symbol.iterator]()를