[ES6] Iteration

sangminnn·2020년 4월 9일
0

글로 정리하는 ES6

목록 보기
6/11

개념

ES6에서는 데이터 컬렉션을 순회하기 위한 규약을 만들었는데, 이것이 바로 Iteration Protocol이다.

이전의 Spread 글에서 언급했던 것과 같이, 이 Iteration Protocol을 준수한 객체만이 Spread 문법을 사용할 수 있고, 더 나아가 for ... of 문으로 순회가 가능하다.

그렇다면 Iteration Protocol은 무엇일까 ?

이것은 이터러블 프로토콜(Iterable Protocol)이터레이터 프로토콜(Iterator Protocol) 을 말한다.

이 둘에 대해 간단히 말하자면, 이터러블 프로토콜반복 가능한 객체 를 일컫는 말이고, 이터레이터 프로토콜작성한 순서대로 처리하는 프로토콜을 일컫는 말이다.

이터레이션 프로토콜을 가지고 있는지에 대한 여부는 직접 코드로 확인해볼 수 있는데

String, Array, Map, Set, TypedArray, Argument 오브젝트

위의 빌트인 객체(Built In Object)에 기본적으로 Symbol.iterator 프로퍼티를 가지고 있다고 한다.

아래의 사진을 보자.

이는 실제 콘솔창에서 실행해본 결과로, Array 에는 Symbol.iterator 프로퍼티가 존재하고, Object 에는 Symbol.iterator가 존재하지 않는 것을 확인해볼 수 있다.

여기서 위에서 언급한 내용에 따라 한발만 더 나아가보자.

Iteration Protocol을 준수한 객체만이 Spread 문법을 사용할 수 있고,
더 나아가 for ... of 문으로 순회가 가능하다.

이 말에 따라 생각해보면, Array는 for ... of 문을 사용할 수 있고, Object는 for ... of 문을 사용할 수 없다는 것을 알 수 있다.

for ... of, for ... in

여기서 추가적으로 위의 for ... of 문과 비슷한 형태인 for ... in 구문의 차이를 알아보겠다.

간단히 말하자면 for ... in 구문은 해당 배열, 객체내에 존재하는 key값을 하나씩 return 하는 것이고, for ... of구문은 해당 배열내에 존재하는 value값을 하나씩 return 하는 것이다.


마치며 ...

이번 글도 _Jbee 님의

https://jaeyeophan.github.io/2017/04/18/ES6-3-Iteration-and-for-of-statement/

글과 poiemaweb 의

https://poiemaweb.com/es6-iteration-for-of

를 참고하여 공부하고 작성한 내용입니다.

profile
생각하며 코딩하려고 노력하는 개발자가 되겠습니다.

0개의 댓글