Iterable Iterator 정의

이터러블/이터레이터 프로토콜에 대한 정의 & 간단 예제

Iterable 이란?

이터레이터를 리턴하는 [Symbol.iterator]() 를 가진 값

Iterator 란?

{ value, done } 객체를 리턴하는 next() 를 가진 값

이터러블/이터레이터 프로토콜:

이터러블을 for ... of, 전개 연산자 등과 함께 동작하도록한 규약

  1. 배열을 이용한 심플 예제

const arr = [1,2,3];
for (const a of arr) console.log(a);

arr 은 [Symbol.iterator] 라는 메서드를 가지고 있고, 평가하면 함수가 반환된다.

arr[Symbol.iterator] // 입력시
f values() { [native code] } // 출력
arr[Symbol.iterator]() // 함수 실행시,
Array Iterator() // 출력값

let iterator = arr[Symbol.iterator]();
iterator.next(); // 반환된 이터레이터 실행 시,
> {value: 1, done: false} // 안에있는 값이 하나씩 출력됨
...
> {value: undefined, done: true}
  • for ... of 문value에 들어오는 값을 a에 담아서 출력하다가 done 값이 true가 되면 for문을 빠져나오게 되어 있다.

  • new Set([1,2,3]), new Map() 역시 동일하다.

참고 링크

Last updated