`for...of`를 쓸 줄 아는 수준에서 끝나는지, 아니면 그 뒤에 깔린 두 규약(이터러블·이터레이터)을 분리해서 설명할 수 있는지를 가른다. 제너레이터·비동기 이터러블로 꼬리 질문을 이어갈지 여부가 여기서 결정된다.
이터러블은 Symbol.iterator 메서드를 호출하면 이터레이터를 돌려주는 객체다. 이터레이터는 next()를 부를 때마다 { value, done } 형태를 뱉고, done이 true가 되는 순간 순회가 끝난다. 배열·문자열·Set·Map이 for...of, 스프레드, 구조분해에서 똑같이 동작하는 이유는 이 두 규약을 다 같이 따르기 때문이다. 일반 객체는 이 규약을 구현하지 않아서 그대로 for...of에 못 넣는다.
트리 구조나 페이지 단위 응답을 다루느라 Symbol.iterator를 직접 박은 적이 있다면 그때 어떤 자료구조였고 왜 그 규약을 골랐는지로 연결할 수 있다
스프레드나 `Array.from`이 예상과 다르게 동작해서 디버깅한 경험이 있다면 이터러블 여부를 어떻게 확인했는지로 풀어낼 수 있다
제너레이터로 데이터 스트림을 끊어 처리했던 경험이 있다면 `next()`의 일회성과 lazy evaluation을 자기 사례로 묶을 수 있다
공통 유틸을 짜면서 `for...of` 호환을 의도적으로 맞춘 경험이 있다면 그 이유와 트레이드오프를 설명 단서로 쓸 수 있다
아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.