아무리 생각해도 이해가 가지 않는 부분이 있었다.

이번에 Iterable과 Iterator, 그리고 Generator를 공부하면서 드는 의문이 몇 가지 있었다. 특히 Iterable을 공부할 때 나왔던 내용 중에는 아래와 같은 내용을 읽은 적이 있다.

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

배열과 문자열은 가장 광범위하게 쓰이는 내장 이터러블입니다.

근데, 공부할 때만 해도 Iterable은 반복이 가능한 ‘객체’라고 배웠는데… 문자열이 여기서 왜 나오지? 삼단 논법대로라고 하면 아래와 같이 표현할 수 있는데..

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

이터러블은 반복 가능한 객체를 가리킨다.

따라서, 문자열은 반복 가능한 객체이다.

원시 타입인 문자열과 참조 타입인 객체. 엄연히 타입이 다른데.. 이러다보니 내 안에 있는 JavaScript의 개념이 엄청 혼란스럽기 시작했다.

이런 의문을 SNS에 공유하면서 고통받고 있었는데, 그 내용을 본 사람들과 함께 이야기를 나눈 결과 고통받던 사항에 관한 의문점이 풀렸다.

여기서는 그 의문점을 해소한 내용을 정리해보고자 한다.

목차

왜 문자열은 Iterable에 쓸 수 있는 for…of를 사용할 수 있는 걸까?

원시 타입이라고 배운 문자열이 참조 타입처럼 써지는 이유는 무엇인가?

왜 문자열은 Iterable에 쓸 수 있는 for…of를 사용할 수 있는 걸까?

원시 타입이라고 배운 문자열이 참조 타입처럼 써지는 이유는 무엇인가?