👋 이터레이션, 이터레이션 프로토콜


1. 이터레이션

  • 이터레이션(Iteration)의 사전적 의미 : 반복

    • for()문의 반복 개념과 차이 있음
    const list = [10, 20];
    
    for (let value of list) {
    console.log(value);
    }
    
    const obj = list[Symbol.iterator]();
    
    console.log(obj.next());
    console.log(obj.next());
    console.log(obj.next());
    
    // 10
    // 20
    // {value: 10, done: false}
    // {value: 20, done: false}
    // {value: undefined, done: true}
  • 이터레이션을 위한 프로토콜(Protocol) 필요

    • 예: 통신 프로토콜(규약)
    • 데이터 송수신 프로토콜 정의
    • 어떻게 반복을 할 것인가에 대한 규약이 필요
  • 즉, 이터레이션은 프로토콜을 갖고 있으며

    • 프로토콜에 따라 이터레이션 수행
    • 프로토콜이 구문과 빌트인이 아니므로 프로토콜에 맞으면 이터레이션 가능

2. 이터레이션 프로토콜

  • 이터레이션 프로토콜(규약)은
  • 오브젝트가 이터레이션 할 수 있는 구조이어야 하며

    • [10, 20]은 가능, 100은 불가능
    const list = [10, 20];
    
    const obj = list[Symbol.iterator]();
    
    console.log(obj.next());
    console.log(obj.next());
    console.log(obj.next());
    
    // {value: 10, done: false}
    // {value: 20, done: false}
    // {value: undefined, done: true}
  • 이터레이션 프로토콜 구분

    • 이터러블(iterable) 프로토콜 : 반복가능 한 것
    • 이터레이터(iterator) 프로토콜 : obj.next() 처럼 반복문을 실행시키는 것 —> 이렇게 이터러블, 이터레이터를 규약하는 이유는? 확장성 때문에
  • 개발자 코드로 프로토콜을 맞추면 이터레이션 할 수 없는 오브젝트를 이터레이션 할 수 있도록 만들 수 있음