javascript Symbol.iterator 1
Symbol.iterator
공부할때 간간히 까먹기는 했는데 전체적으로 한번 정리가 필요한 시점이라 정리를 해보려고 한다.
현재 Symbol.iterator는 어떻게 사용되는가?
기존에 사용하던 for문에서 우리는 명령에 가까운 코딩을 해왔었다.
그렇다면 현재 ES6에서의 javascript 는 어떻게 변하였을까
1 | //과거 ES5 |
이와 같은 변화의 기본 이유가 어떤 것이고 왜 이렇게 된 것인지
유인동 강사님의 강의를 듣고 매우 많이 정리가 되었다.
바로 위에서 말한 Symbol.iterator 라는 방식을 javascript는 채택 하고 쓰고 있던 것이었다.
- Symbol.iterator라는 Symbol
“심볼(symbol)”은 데이터 형식과 심볼 데이터 형식의 인스턴스를 생성하는 클래스와 유사한(class-like) “Symbol”이다라는 것이 현재 javascript 공식 문서의 설명이다.
우리는 한걸음 더 나아갔다. Symbol을 통해서 그렇다면 class와 비슷하게 추상화를 할 것이다라는 것을 추론해볼수 있다.
- iterator라는 반복기
영어 자체의 의미가 반복기(iterator)라는 뜻이다. 그렇다면
좀 더 명확해졌다.
추상화를 통한 반복
Symbol.iterator는 결국 추상화를 위한 반복이다
약간의 예시를 보자
1 | const arr=[1,2,3] |
답은 어떻게 되었을까?
역시 아무런 답이 나오지 않는다. TypeError arr is not iterable
of 의 순회는 과거의 방식과 달라진 것을 명확하게 알수 있었다.