잘 알려진 Symbol.iterator 심볼은 객체에 대응하는 기본 이터레이터를 지정합니다. for...of와 같이 사용됩니다.

Property attributes of Symbol.iterator
Writable no
Enumerable no
Configurable no

설명

(for..of 루프의 시작부분과 같이) 객체가 반환될 필요가 있을때는 언제든지@@iterator 메서드는 인수 없이도 호출 할 수 있습니다. 반환된 iterator는 반복할 값을 취득하기 위해 사용됩니다.

Object와 같이 반복동작을 내장하고 있는 형태도 있지만 그렇지 않은 경우도 있습니다. @@iterator 메서드를 가지고 있는 내장형 타입은 아래와 같습니다.

상세한 내용은 반복처리 프로토콜도 확인 해 주시기 바랍니다.

예제

유저 정의 이터레이터

앞에서 기술한 바와 같이 독자적으로 이터레이터를 만드는 것이 가능합니다.

var myIterable = {}
myIterable[Symbol.iterator] = function* () {
    yield 1;
    yield 2;
    yield 3;
};
[...myIterable] // [1, 2, 3]

비정형 이터레이터

iterable의 @@iterator 메서드가 이터레이터 객체를 반환하지 않는 경우 비정형 이터레이터입니다. 이와 같이 사용하는 경우 실행시 예외 혹은 예상치 못한 버그를 발생할 가능성이 있습니다.

var nonWellFormedIterable = {}
nonWellFormedIterable[Symbol.iterator] = () => 1
[...nonWellFormedIterable] // TypeError: [] is not a function

명세

명세 상황 코멘트
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Symbol.iterator' in that specification.
Standard 초기 정의
ECMAScript Latest Draft (ECMA-262)
The definition of 'Symbol.iterator' in that specification.
Draft  

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support43 Yes36 No3010
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support Yes Yes Yes36 Yes10 Yes

관련 정보

문서 태그 및 공헌자

이 페이지의 공헌자: limkukhyun, BANIP
최종 변경: limkukhyun,