함수형 프로그래밍과 JavaScript ES6+ (1) - iterator 프로토콜

Lee Tae-Sung·2023년 1월 16일
0

JS

목록 보기
51/56

인프런 유인동님의 '함수형 프로그래밍과 JavaScript ES6+' 강의를 들으며 정리 및 공부한 내용입니다.

  1. for of, in 이 사용하는 iterator 프로토콜

for of 문은 이전 사용하던 for 문과 메커니즘이 다름

for of 로 map과 set은 순회가 array처럼 가능.
그러나 이들은 인덱스로 출력이 되지 않음

여기서 강사님이 표현했던 말 중 인상깊었던건

이걸 알아보자고 하면서 'for of 가 어떻게 추상화 되었는지 알아보자' 라고 하심

이 '추상화'라는 표현이 여기저기서 많이 들리는데 실제로 쓰이는 것은 처음 봄.

=> Symbol.iterator에 있는 함수를 없앴더니 해당 에러를 표시함.

map, set도 동일하게 array처럼 Symbol.iterator를 가지고 있음.

해당 함수를 null로 처리하면 위와 동일

여기서 암기

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

  • 이터러블: 이터레이터를 리턴하는 Symbol.iterator 를 가진 값
  • 이터레이터: { value, done } 객체를 리턴하는 next() 를 가진 값.
  • 이터러블/이터레이터 프로토콜: 이터러블을 for...of, 전개 연산자 등과 함께 동작하도록한 규약

여기서 추가로 궁금했던 점은

Symbol.iterator 함수를 없애더라도 for 문에서 인덱스로 특정하는건 가능하다 그러나 for in은 안된다.

  1. 전개연산자 ... 역시 이 iterator 프로토콜을 사용함.

Symbol.iterator 를 null로 보내버리면 ... 전개연산자 사용이 불가.

profile
긍정적인 에너지를 가진 개발자, 이태성입니다.

0개의 댓글