Iterator, Generator [JS]   이터레이터, 제너레이터

(2019-09-20)

Iterable Object, 이터러블 객체, 열거 가능 객체, 반복 가능한 객체

Top > [기술공통]
[기초과학]
[진동/파동]
[방송/멀티미디어/정보이론]
[전기전자공학]
[통신/네트워킹]
[정보기술(IT)]
[공학일반(기계,재료등)]
[표준/계측/품질]
[기술경영]
정보기술(IT) >   1. 정보기술
[전산기초]
[컴퓨터구조]
[프로그래밍]
[데이터베이스]
[소프트웨어 공학]
[운영체제]
[정보보호/보안]
[IT 기타기술]
프로그래밍 >   1. 프로그램, 프로그래밍
[프로그래밍 언어론]
[프로그래밍 방법론]
[객체지향 프로그래밍]
[자료표현코드]
[자료구조]
[알고리즘]
[시스템 소프트웨어]
[프로그래밍언어 종류]
[프로그래밍 기타일반]
프로그래밍언어 종류 >   1. 프로그래밍 언어
[C]
[C++]
[자바(Java)]
[자바스크립트]
[PHP]
[파이썬]
[(기타 언어)]
자바스크립트 >   1. JavaScript
  2. JS 기초 문법
[JS 변수,타입,논리식]
[JS 구문,연산자]
[JS 함수]
[JS 객체]
[JS 배열/Map/Set]
[JS 활용]
[JS 웹문서 제어]
JS 객체  1. JS 객체
  2. JS 객체 구분
  3. JS 객체의 생성 저장 접근
  4. JS 클래스
  5. 프로토타입 객체
  6. 프라미스 객체
  7. 일급 객체
  8. 래퍼 객체
  9. 콘솔 객체
  10. this 참조
  11. 이터레이터,제너레이터
  12. 범용 객체

1. 열거 가능 객체/반복 가능한 객체 (Iterable Object)

  ㅇ 그 내부에 열거(반복) 가능한 요소들을 갖는 객체
     - 例) Array 객체,String 객체,Map 객체,Set 객체 등

  ㅇ 특징
     - 기본적으로 이터레이터(반복자)를 만들 수 있음
     - 객체 내 Symbol.iterator 속성에 특별한 형태의 함수가 들어있음
        . Symbol.iterator 메소드 : 이터레이터를 만들어 반환하는 함수
     * 아래와 같이, `열거(반복)와 관련된 기능`들을 쓸 수 있음
        . for ... of 루프의 사용 가능
        . 전개 연산자 (...)의 사용 가능
        . 분할 대입 연산(Destructuring Assignment) 가능


2. 이터레이터 (Iterator, 반복자)

  ㅇ 반복 처리(이터레이션,Iteration)가 가능한 구조를 갖춘 객체
     - 객체에 담긴 내용을 요소별로 열거/반복하기 위한 구조를 갖춘 객체

  ㅇ 특징 
     * 반복 처리를 단계별로 세밀하게 제어할 수 있도록 만들어진 객체
     - next 메소드를 갖음
     - next 메소드의 반환값 : 요소 값이 아니라, 반복 처리용 프로퍼티를 갖는 반복자 객체
        . 즉, next 반환 객체는, { value : 요소값, done : 논리값 } 임
           .. value 프로퍼티 : 꺼낸 값이 이곳에 저장됨
           .. done 프로퍼티 : 반복의 끝인지를 나타내는 논리값

  ㅇ 이터레이터 생성 例) 
     - const iterator1 = array.values(); 
     - const iterator2 = array[Symbol.iterator]();
        . Symbol.iterator에서 반환된 심볼을 키로 하여, 배열 객체메소드를 호출 함
     * 배열 array 내 메소드 values() 또는 [Symbol.iterator]의 반환값으로,
       배열 이터레이터(Array Iterator) iterator1 또는 iterator2가 생성 됨


3. 제너레이터 (Generator)

  ㅇ 반복 처리 가능한 이터레이터를 값으로 반환하는 함수
     - 매우 쉽게 반복 가능한 객체를 반환하는 특별한 형태의 함수

  ㅇ 특징 
     - function* 함수명() { ...} 형식으로 정의
     - yield 명령으로 값을 반환
        . yield 명령문이 여럿일 때, 다음 호출시 이후 yield 명령문부터 재개
        . 한편, return의 경우는 바로 함수를 종료시킴

  ㅇ 장점
     - 결과를 무한히 내놓는 함수는 구현할 수 없으며,
     - 어느 정도 상한을 두더라도, 이를 저장할 메모리 소요가 필요함
     - 제너레이터는, 쉽게 또한 최소한의 자원 소모로써, 규칙적인 발생 구조를 갖게 할 수 있음


[JS 객체] 1. JS 객체 2. JS 객체 구분 3. JS 객체의 생성 저장 접근 4. JS 클래스 5. 프로토타입 객체 6. 프라미스 객체 7. 일급 객체 8. 래퍼 객체 9. 콘솔 객체 10. this 참조 11. 이터레이터,제너레이터 12. 범용 객체

    요약목록
Copyrightⓒ written by 차재복 (Cha Jae Bok)        「 소액후원 」