[Q&A] 빈 배열 값에 reduce를 사용할 때 TypeError가 발생하는 이유

김재훈·2023년 5월 17일
0

이번 질문은 javascript에서 빈 배열 값(const arr = [])을 인덱스로 참조할 때(arr[0]) undefined로 평가되는데, 왜 reduce를 적용하려 하면 NaN이 아니라 Type Error가 발생하는지 궁금하다는 내용이었습니다.

MDN에 찾아본 결과, 초기값이 없는 빈 배열에 대해 reduce를 실행하는 경우 TypeError를 반환한다고 나와있습니다. 링크

Array.prototype.reduce에 spec을 보면 해당 메서드가 호출됐을 때 실행되는 동작이 단계별로 나옵니다. 이 단계에서 4번을 보시면 길이가 0이거나 초기값이 존재하지 않는 배열인 경우 TypeError를 반환한다고 합니다.

즉, undefined 값을 평가해서 콜백함수에 전달하기 전에 저런 예외사항이 발견되면 즉시 예외를 반환하도록 방지 처리가 되어있기 때문입니다. 링크

profile
개발하면서 새롭게 배운 내용, 시행착오한 내용들을 잊지 않기 위해 기록합니다.

1개의 댓글

comment-user-thumbnail
2023년 5월 21일

이거 오랜만에 보네요. 재훈님 덕분에 spec을 봐야 한다는 걸 배웠습니다. 다시 한 번 감사해요!

답글 달기