인프런 커뮤니티 질문&답변

WS IM님의 프로필 이미지
WS IM

작성한 질문수

[리뉴얼] 코딩자율학습 제로초의 자바스크립트 입문

줄, 칸, 지뢰 개수 입력받기

열리지 않은 칸을 엄청 빨리 클릭해서 열 때 Uncaught TypeError

작성

·

190

0

제가 혹시 실수한 것이 있나 싶어서

제로초님 깃허브에 올라와 있는 코드도 그대로 복붙해서 실행해봤는데 마찬가지로 빈 칸을 빠르게 클릭할 때 이런 에러가 발생합니다.

```

Uncaught TypeError: Cannot read property 'undefined' of undefined at HTMLTableSectionElement.onLeftClick

```

이런 버그는 어떻게 해결 하면 좋을까요?

다시 확인해보니, 이미 열린 칸 위에서도 빠르게 클릭하면 같은 에러가 발생하는데, 에러 원인이 뭔지 파악하기가 어렵습니다.

에러 발생 코드 위치는 여기에요.

const cellData = data[rowIndex][cellIndex];

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

if (rowIndex > -1 && cellIndex > -1) { } 같은 것으로 감싸면 undefined가 나올 수가 없으므로 해결됩니다.

WS IM님의 프로필 이미지
WS IM
질문자

빠른 답변 감사합니다!

하나 더 질문 드리고 싶습니다!

엄청 빠른 속도로 맵을 클릭한다 하더라도 저는 분명히 게입맵의 인덱스 범위 안에서만 클릭을 했는데 undefined가 나오는 이유가 무엇인지 알 수 있을까요? onLeftClick(event) 함수에서 콘솔에 event.target을 찍어보니까 에러가 안 날 때는 td가 출력되고, 위 질문에 있는 에러가 발생할 때는 tr이나 tbody가 출력되네요!

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

경계선을 클릭하신 것 같습니다.

WS IM님의 프로필 이미지
WS IM
질문자

그렇군요! ㅎㅎ 하나 더 배워갑니다!

강의에서 나온 "?." 옵셔널체이닝을 const cellData = data[rowIndex][cellIndex]; 여기에도 적용해서 data[rowIndex]?.[cellIndex]처럼 써봤는데 위와 같은 에러는 안 뜨는 것 같습니다. 알려주신 방법 외에 이것도 해결 방법이 될 수 있는 거죠?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 다만 cellData가 undefined라서 다음에 또 비슷한 에러가 날 수 있습니다.

WS IM님의 프로필 이미지
WS IM

작성한 질문수

질문하기