Uncaught TypeError: Cannot read property '0' of undefined

이민호·2024년 4월 19일
0

미니프로젝트(간단한 웹페이지 제작) 중 직면한 에러

charlist = [["E", "I"],[],[],...]

이런 구조의 이차원 배열 변수를 선언해서 내부 함수에서 호출하는 부분에서
Uncaught TypeError: Cannot read property '0' of undefined
위와 같은 에러가 떴다.
에러 메세지 해소 후 시간이 조금 지난 터라 함수의 내용은 정확히 기억은 안나지만,
함수 내부에서 이차원 배열의 요소를 인덱스로 불러오는 코드에서 에러가 났었다.

charlist[i][0] //이런식으로,

구글링 결과, 변수가 정의되기 전, 함수가 선언됨으로 인해서 값이 'Undefined'로 불러와 지는 에러인 것으로 판단된다.
해결법으로는
1) 조건문을 활용해 변수의 값을 확인하고 코드를 진행하는 방법

if (charlist[i][0]) {
	..
    }

이 방법은 결국 변수의 값이 할당되지 않아 진행이 불가능 했다.

2) Optional chaining을 활용하는 방법

charlist?.[i]?.[0]

이런식으로 '?' 연산자를 넣어준다면, undefined를 확인하면서 진행되는 1) 방법의 조건문을 대체하는 방법이었다. 하지만 결국 이 방법을 쓰면 에러가 무시될뿐 값이 할당 되는 것은 아니었기 때문에 이 방법도 사용하지 못했다.

결국 나는 변수의 형태, 이차원 배열을 일차원 배열로 변경하고 인덱스 값을 변경하는 것으로 오류에서 도망쳤다.

언젠간 맞서 싸울 수 있었으면 좋겠다.

profile
둘뺌

0개의 댓글

Powered by GraphCDN, the GraphQL CDN