Iterable Iterator 정의
이터러블/이터레이터 프로토콜에 대한 정의 & 간단 예제
Iterable 이란?
이터레이터를 리턴하는 [Symbol.iterator]() 를 가진 값
Iterator 란?
{ value, done } 객체를 리턴하는 next() 를 가진 값
배열을 이용한 심플 예제
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
Was this helpful?