##Iterator가 뭘까
iterate : 반복하다.
iterator : 반복자.
-
반복자는 순회를 수행하고 컨테이너의 데이터 요소에 대한 액세스를 제공하지만 자체적으로 반복을 수행하진 않는다.
-
반복자는 객체 지향적 프로그래밍에서 배열이나 그와 유사한 자료구조의 내부요소를 순회하는 객체다.
-
iterator는 리스트나 셋과 같은 컬렉션을 반복하는 데 사용할 수 있는 객체이다.
-
반복문을 써도 충분한 것 같은데 왜 만들어진걸까?
- 리스트는 인덱스가 있지만 Set은 순서가 없는 컬렉션이여서 인덱스가 없다.
- iterator는 for-each 문이 할 수 없는 일을 할 수 있다.
- iterator는 양방향으로 반복할 수 있는 기능이 있다. (next(), previous())
- for-each문은 오직 처음에서 끝으로.
- hasNext()로 더 많은 요소가 있는지 확인가능.
- 반복하다가 요소 삭제, 수정도 가능.
- JS에서 for in, for of
1) for in
- 객체의 속성들을 반복하여 작업을 수행할 수 있다.
- 객체의 key 값에는 접근이 가능하지만, value 값에는 접근기능이 없다.
- JS에서는 객체 속성들이 내부적으로 숨겨진 속성들을 가지고 있는데 그 중 Enumerable이 있다. for in은 이 값이 true로 셋팅되어 속성들만 바복할 수 있다.
2) for of
- ES6에 추가된 새로운 컬렉션 전용 반복 구문.
- 사용하기 위해서는 컬렉션 객체가 [Symbol.iterator] 속성을 가지고 있어야만 한다.
*20230106 수정.