CH34 이터러블

34 반복 가능


CH34 이터러블 1

반복 가능한 로그

Symbol.iterator를 속성 키로 사용하는 메서드가 직접 구현되거나 상속되어 호출되면 반복자가 반환됩니다. 이를 반복 가능한 프로토콜이라고 합니다.

Iterables is for… of 문을 통해 순회할 수 있으며 확산 구문 및 구조 분해 할당의 대상으로 사용할 수 있습니다.

반복자 로그

Symbol.iterator를 호출하면 반복자 프로토콜을 준수하는 반복자를 반환합니다.

iterator.next를 호출하면 Iterable을 반복하고 value 및 done 속성을 가진 Iterator 결과 객체를 반환합니다. 이를 반복자 프로토콜이라고 하며, 이와 일치하는 객체를 반복자라고 합니다.

Iterator는 iterable의 요소를 반복하는 포인터 역할을 합니다.

...
(Symbol.iterator)(){
    return {
        next(){
            return {value:any, done : boolean}
        }
    }
}

아래 반환은 반복자이며 전체 메서드는 반복 가능합니다.

반복 가능

iterable 여부를 확인하는 함수

const isIterable=v=>v!==null&&typeof v(Symbol.iterable())==='function'

Symbol.iterable이 있으면 사용, 전파 또는 구조 분해를 위해 할당할 수 있습니다.

반복자

next 메서드를 호출하면 다음 iterable을 반복한 결과를 나타내는 iterator 결과 객체가 반환됩니다.

내장 반복 가능

Array, String, Map, Set, TypedArray, Argument 및 DOM 컬렉션은 반복 가능합니다.

의사배열 객체

길이와 속성 키를 인덱스로 사용하는 객체

반복이 아니므로 for of 문을 사용할 수 없습니다.