본문 바로가기
언어/자바스크립트(Java Script)

[자바스크립트] 이터레이터 & 제너레이터

by 골절문간신배신 2024. 8. 6.

이터러블 객체

  • 이터러블 객체에서 이터러블(iterable)이란, ‘순서대로 처리할 수 있다’는 뜻
  • 예를 들어, 배열은 인덱스와 값을 가지고 있으므로 인덱스 0부터 차례대로 값을 가져와서 처리할 수 있
    기 때문에 이터러블 객체이다.
  • 문자열과 배열, 맵, 셋이 이터러블 객체이다
  • 이터러블 객체에서는 다음과 같은 기능을 사용할 수 있다.
     • for...of 반복문 
    • 전개 연산자(...) 
    • 구조 분해 할당

 

이터러블 객체에는 Symbol.iterator 메서드가 포함되어 있다. ( ‘이터러블 프로토콜'이라고 함)
Symbol.iterator 메서드를 실행하면 Iterator 객체가 반환된다

 

 

이터레이터 객체란 객체의 요소를 순서대로 꺼낼 수 있는 객체
next() 메서드가 있기 때문에 가능
next() 메서드는 value와 done을 반환한다. value – 다음 값, done – 이터레이터 객체가 끝났는지 여부

 


 

제너레이터 함수 

  • 일반 객체를 이터러블하게 만들기 위해 사용하는 함수
    • 일반 함수와 구별하기 위해 function 다음에 *기호를 붙여서 작성
    • 함수 안에 return 문 대신 yield 문을 사용
function* gen() {
    yield 1;
    yield 2; 
    yield 3;
}

// 1. next() 메서드 사용
let g1 = gen()
g1.next() // {value: 1, done: false}
g1.next() // {value: 2, done: false}
g1.next() // {value: 3, done: false}
g1.next() // {value: undefined, done: true}
g1 // gen {<closed>}

// 2. for ... of 구문 사용 
let g2 = gen()
for(let i of g2) console.log(i)

 

댓글