
377
12.2 이터러블 객체 만들기
반환 값의
done
프로퍼티가
true
일 때까지 반복합니다. 여기서 난해한 부분은 이터
러블 객체의 이터레이터 메서드는 일반적인 이름을 사용하는 것이 아니라
Symbol
.iterator
를 이름으로 사용한다는 겁니다. 따라서 이터러블 객체
iterable
을 순회
하는 단순한
for
/
of
루프를 다음과 같이 복잡하게 작성할 수도 있습니다.
let iterable
=
[99];
let iterator
=
iterable[Symbol.iterator]();
for(let result
=
iterator.next(); !result.done; result
=
iterator.next()) {
console.log(result.value) // result.value
==
99
}
내장된 이터러블 데이터 타입의 이터레이터 객체는 그 자체가 이터러블입니다. 즉,
자기 자신을 반환하는
Symbol.iterator
메서드를 갖는다는 뜻입니다. ‘부분적으로
사용된’ 이터레이터를 순회할 때 이런 특징이 유용할 때가 간혹 있습니다.
let list
=
[1,2,3,4,5];
let iter
=
list[Symbol.iterator]();
let head
=
iter.next().value; // head
==
1 ...