이터레이터
이터러블의 Symbol.iterator 메서드를 호출하면
이터레이터 프로토콜을 준수한 이터레이터를 반환한다.
이터러블의 Symbol.iterator 메서드가 반환한 이터레이터는 next 메서드를 갖는다.
next 메서드
- 이터레이터의 next 메서드는 이터러블의 각 요소를 순회하기 위한 포인터의 역할을 한다.
- 즉, next 메서드를 호출하면 이터러블을 순차적으로 한 단계씩 순회하며,
- 순회 결과를 나타내는 이터레이터 리절트 객체(iterator result object)를 반환한다.
// 배열은 이터러블 프로토콜을 준수한 이터러블이다.
const array = ["사과", "복숭아", "참외"];
// Symbol.iterator 메서드는 이터레이터를 반환한다.
const iterator = array[Symbol.iterator]();
// Symbol.iterator 메서드가 반환한 이터레이터는 next 메서드를 갖는다.
console.log("next" in iterator);
// next 메서드를 호출하면 이터러블을 순회하며 순회 결과를 나타내는 이터레이터 리절트 객체를 반환한다.
// 이터레이터 리절트 객체는 value와 done 프로퍼티를 갖는다.
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
console.log(iterator.next());
이터레이터의 next 메서드가 반환하는 이터레이터 리절트 객체의 value 프로퍼티는 현재 순회중인 이터러블의 값을 나타내며, done 프로퍼티는 이터러블의 순회 완료 여부를 나타낸다.
'Javascript' 카테고리의 다른 글
(JS) 제너레이터 (0) | 2022.06.13 |
---|---|
(JS) 사용자 정의 이터러블 (1) | 2022.06.13 |
(JS) 이터러블 (아직 직관적인 이해가 안감) (0) | 2022.06.11 |
(JS) 프로미스(Promise) (0) | 2022.06.10 |
(JS) Ajax, JSON (stringify, parse 메서드) (0) | 2022.06.09 |