[JS 완벽 가이드] 이터레이터와 제너레이터

개발 log·2022년 7월 9일
0

JS 지식

목록 보기
27/36
post-thumbnail

12 | 이터레이터와 제너레이터

이터레이터의 동작 방법

JS의 순회를 이해하기 위한 세가지

  1. 이터러블 객체
  2. 순회를 수행하는 이터레이터 객체
  3. 각 순회 단계의 결과를 담은 이터레이터 리절트 객체

이터러블 객체

이터레이터 객체를 반환하고 이터레이터 메서드를 가진 객체

이터레이터 객체

이터레이터 리절트 객체를 반환하고 next메서드를 가진 객체

이터레이터 리절트 객체

{ value: any, done: boolean }형태의 객체

이터러블 순회 순서

  1. 이터레이터 메서드(next) 호출
  2. 이터레이터 리절트 객체를 반환하는 이터레이터 객체를 얻음
  3. 이터레이터 리절트 객체의 done 프로퍼티가 true일때까지 순회

이터레이터 강제 종료

이터레이터 리절트 객체의 done 프로퍼티가 true가 되기 전에 끝내는 방법

  • for/of문에서 breakreturn 문을 만났을 때
  • 만약 순회를 중간에 마쳐야 한다면 인터프리터는 이터레이터 객체에 return()메서드가 있는지 확인한다.
  • 만약 return()메서드가 존재한다면 인터프리터는 인자 없이 return()메서드를 호출해서 파일을 닫고 메모리를 반환한다.
  • return()메서드는 반드시 이터레이터 리절트 객체를 반환해야 한다.

제너레이터

  • 제너레이터는 이터레이터이다.
  • 제너레이터는 이터레이터 객체를 반환한다.
  • yield는 사실 표현식이다.
  • 제너레이터의 next()를 호출하면 yield 표현식을 만날 때까지 실행된다.
  • yield 키워드 다음에 있는 표현식을 평가한 값이 next()의 반환 값이다.(즉시 실행 중지)
  • next()메서드를 다음에 호출할 때 yield표현식의 값을 인자로 전달한다.
profile
프론트엔드 개발자

0개의 댓글