well-formed iterable에 대한 오해

Jason Kim·2022년 1월 26일
0

국내 블로그에서는 well-formed iterable을 "Iterator이면서 Iterable인 객체", "[Symbol.iterator]()가 this를 리턴"으로 설명하는데, 이것은 잘못된 설명이다.

우선 이 문서에서는 non-well-formed iterable은 @@iterator가 iterator object를 반환하지 않는 것이라고 정의한다.

이것은 런타임 에러나 버그가 발생할 수 있다.

다음으로는 여기에서 generator는 iterator이면서 동시에 iterable이라고 설명한다.

또한 iterable인 generator의 @@iterator는 iterator로서 자기 자신을 리턴하기 때문에 well-formed iterable이라고 설명한다.

이 내용들을 종합하면 @@iterator method가 iterator protocol이 구현된 object를 리턴하기만 하면 iterable한 iterator가 아니더라도 well-formed iterable이다.

국내 블로그의 글들은 generator의 내용을 오해하여 인용된 것이 전파된 것 아닌가 추측이 된다.

2개의 댓글

comment-user-thumbnail
2022년 12월 12일

mdn에 들어가보니 well-formed iterable에 대한 주석이 대체되었네요 ㅎㅎ
마지막 종합하여 내리신 결론에 따르면 "return itself"를 "객체를 반환하면으로" 해석하신 것 같은데 맞을까요?

1개의 답글