[TIL] iterable 개념 정리

2021-08-28 오후 8:07:44
JavaScript
iterable
[TIL] iterable 개념 정리

iterable 객체

반복가능한 이라는 뜻의 iterable객체는 배열을 일반화 한 객체입니다. 이는 어떠한 객체든 for ... of 반복문을 적용할 수 있게 합니다.

배열이 그중 대표적인 이터러블 객체의 예라 할 수 있습니다.

문자열은 이터러블 입니다.

배열외에도 가장 광범위하게 사용되고 있는 문자열 for ...of는 문자열의 각 글자를 순회합니다~!

for (let char of "test") { // 글자 하나당 한 번 실행됩니다(4회 호출). alert( char ); // t, e, s, t가 차례대로 출력됨 }

이터레이터를 명시적으로 호출하는 방법

let str = "Hello"; let iterator = str[Symbol.iterator](); while(true){ let refult = iterator.next(); if(result.done) break; console.log(result.value) // "H" "e" "l" "l" "o" }

이터레이터를 위처럼 명시적으로 호출 하는 경우는 거의 없습니다. 하지만 위 방법을 사용하면 for ..of를 반복하는 것 보다 더 잘 통제할 수 있다는 장점이 있습니다.

이터러블과 비슷해 보이는 "유사배열" 🎭

유사배열은 (array-like)은 인덱스와 length프로퍼티가 있어 배열처럼 보이는 "객체" 입니다.

"문자열"은 이터러블 이면서 유사배열 일 수 있는 대표적 예이기도 합니다.

유사배열의 예

let arrayLike = { // 인덱스와 length프로퍼티가 있음 => 유사 배열 0: "Hello", 1: "World", length: 2 }; // Symbol.iterator가 없으므로 에러 발생 for (let item of arrayLike) {}

자주 사용되진 않지만 알아두면 좋은 개념이다.

User Profile Icon
sunhwa508
Hi, I'm Sunhwa Lee!