그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록JavaScript
JavaScript

이터러블 프로토콜은 무엇인가요?

실무3/5
설계2/5
인간3/5
기초4/5

면접관의 질문 의도

`for...of`를 쓸 줄 아는 수준에서 끝나는지, 아니면 그 뒤에 깔린 두 규약(이터러블·이터레이터)을 분리해서 설명할 수 있는지를 가른다. 제너레이터·비동기 이터러블로 꼬리 질문을 이어갈지 여부가 여기서 결정된다.

큐레이션 답변

학습 자료

이터러블은 Symbol.iterator 메서드를 호출하면 이터레이터를 돌려주는 객체다. 이터레이터는 next()를 부를 때마다 { value, done } 형태를 뱉고, done이 true가 되는 순간 순회가 끝난다. 배열·문자열·Set·Map이 for...of, 스프레드, 구조분해에서 똑같이 동작하는 이유는 이 두 규약을 다 같이 따르기 때문이다. 일반 객체는 이 규약을 구현하지 않아서 그대로 for...of에 못 넣는다.

좋은 답변 구조

  1. 01이터러블과 이터레이터를 분리해서 정의한다 — 전자는 Symbol.iterator를 가진 객체, 후자는 next를 가진 객체
  2. 02next()가 반환하는 { value, done } 계약과 done이 true로 바뀌는 시점을 짚는다
  3. 03배열·Set·Map이 for...of와 스프레드에서 같이 도는 이유를 이 규약으로 묶어 설명한다
  4. 04일반 객체는 이 규약이 없어서 안 돌고, Symbol.iterator를 직접 박으면 커스텀 순회가 가능하다는 점까지 간다

자주 실수하는 포인트

이터러블과 이터레이터를 같은 것으로 묶어 말한다 — Symbol.iterator를 가진 쪽과 next를 가진 쪽이 다르다는 걸 못 짚는다
일반 객체도 for...of에 넣을 수 있다고 생각하고, 안 될 때 `Object.keys`로 우회하는 이유를 설명하지 못한다
이터레이터가 일회용이라는 점을 빼먹고, 한 번 순회한 제너레이터를 다시 돌렸을 때 비어 나오는 동작을 설명 못 한다
done 플래그를 빼먹거나, value와 done이 같이 와야 한다는 형식 자체를 흐릿하게 말한다

실무 맥락

  • 트리·연결 리스트 같은 커스텀 자료구조를 만들고 `for...of`로 순회시켜야 하는 환경
  • 제너레이터로 페이지네이션이나 스트림 데이터를 한 청크씩 뽑아 처리하는 환경
  • 스프레드나 구조분해가 예상과 다르게 동작해서 버그를 좁혀야 하는 디버깅 상황
  • 비동기 스트림(`for await...of`)이나 Observable 류 라이브러리와 표준 이터러블의 경계를 맞춰야 하는 환경

본인 경험에 녹이는 힌트

트리 구조나 페이지 단위 응답을 다루느라 Symbol.iterator를 직접 박은 적이 있다면 그때 어떤 자료구조였고 왜 그 규약을 골랐는지로 연결할 수 있다

스프레드나 `Array.from`이 예상과 다르게 동작해서 디버깅한 경험이 있다면 이터러블 여부를 어떻게 확인했는지로 풀어낼 수 있다

제너레이터로 데이터 스트림을 끊어 처리했던 경험이 있다면 `next()`의 일회성과 lazy evaluation을 자기 사례로 묶을 수 있다

공통 유틸을 짜면서 `for...of` 호환을 의도적으로 맞춘 경험이 있다면 그 이유와 트레이드오프를 설명 단서로 쓸 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1이터러블과 이터레이터를 분리한 설계가 어떤 이점을 주나요
Q2제너레이터 함수는 이 두 규약을 어떻게 동시에 만족시키나요
Q3비동기 이터러블(`Symbol.asyncIterator`)은 동기 버전과 어디서 갈라지나요
Q4이터레이터가 일회성이라는 점이 실무에서 어떤 버그로 드러나나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문