오늘은 모던 JavaScript 튜토리얼에서 iterable 객체(https://ko.javascript.info/iterable)에 대해서 공부했다. JavaScript로 코드를 작성할 때, ~ is not iterable이라는 에러를 종종 만나게 되는데 이 iterable이 아니라는 뜻이 무슨 이유인지 공부해볼 수 있어서 좋았다.
iterable은 반복 가능한이라는 뜻을 갖고 있기 때문에 for.. of 반복문을 사용할 수 있다. 반대로, iterable 객체가 아니면 for.. of를 사용할 수 없지만 직접 iterable 객체를 만들면 for..of를 사용할 수 있다! iterable이 아닌 객체에 Symbol.iterator라는 메서드를 추가하면 된다.
for..of 반복문이 시작되면 for.. of는 Symbol.iterator를 호출한다. 이후 for.. of는 반환된 객체(이터레이터)만을 대상으로 동작하며 for.. of에 다음 값이 필요하면 for.. of는 이터레이터의 next() 메서드를 호출하고 next()의 반환 값은 {done: Boolean, value: any}와 같은 형태여야 한다. done 값이 true일 땐, 반복의 종료를 done 값이 false일 땐, 다음 값이 저장된다.
이터러블 객체와 유사 배열은 배열이 아니기 때문에 push와 pop 메서드를 사용할 수 없다. 따라서, 이터러블 객체와 유사 배열에서 push와 pop을 사용하려면 Array.from으로 진짜 Array를 만들어야 한다.
오늘 iterable 객체를 공부하면서 왜 is not iterable이라는 오류를 보게 되는지 알게 됐으며 객체를 iterable 객체로 만들며 관심사의 분리를 직접 하는 단계까진 아직 못 갔지만 재밌는 개념 공부였다!
'TIL' 카테고리의 다른 글
TIL - 20220706 (0) | 2022.07.06 |
---|---|
TIL - 20220705 (0) | 2022.07.05 |
TIL - 20220703 (0) | 2022.07.03 |
TIL - 20220702 (0) | 2022.07.02 |
TIL - 20220701 (0) | 2022.07.01 |