티스토리 뷰

728x90

 안녕하세요! Uncaught Reference Error는 변수가 정의되지 않았을 경우에 나타나는 에러입니다. 

 

 코드에서 확인해볼 부분을 알려드릴게요!

 

1. 변수를 제대로 정의한게 맞는지 확인하기

2. 변수 선언을 함수, 조건문, 반복문과 같이 중괄호 안에 넣었는지

3. 지정된 배열의 크기를 넘어선 부분을 불러왔는지

 


1. 변수를 제대로 정의한게 맞는지 확인하기

 에러 메세지에서 변수가 정의되어있지 않다고 나와있으니 당연히 가르키는 변수가 제대로 정의된건지 확인해야해요. 일단 이름부터 다시 확인해보세요! const arr=1; 로 정의해놓은거를 arr이 아니라 다른 이름으로 불러왔을 수 있습니다. 예를 들어서 arr이 아니라 ar 로 불러오는 오타가 발생했을 수 있어요. 아니면 개발하다가 변수 명이 바뀌었는데 그걸 깜빡하고 안바꿨을 수 있습니다.

 중요한건 내가 사용할 변수 명이 선언된 곳을 확인하고 불러올 변수와 선언한 변수가 일치한지 확인하는 것입니다.


2. 변수 선언을 함수, 조건문, 반복문과 같이 중괄호 안에 넣었는지

 이건 스코프의 문제입니다. 각 변수 선언은 블록스코프와 함수스코프가 있어요. 자세한 내용은 밑의 포스팅을 참고해주세요. 핵심은 스코프 즉, 범위 안에서 선언한 변수는 스코프밖에서 변수를 불러올 수 없다는 것입니다.

 한마디로 만약에 const, let으로 조건문이나 반복문, 함수와 같이 {} 중괄호로 이루어져있는 블록 안에서 선언했다면, 그 밖에서는 해당 변수를 사용할 수 없습니다. 

 해결방법은 함수 스코프를 사용하는 변수 var로 변경해주시면 됩니다. 

https://hasumang.tistory.com/32

 

[JavaScript] const, let, var 변수 선언 / 블록 스코프 vs 함수 스코프

안녕하세요, 자바스크립트에서 어떻게 변수 선언을 하는지, 각각의 방법은 어떤 것이 다른지 알아보도록 하겠습니다. 1. 변수 선언 방법 자바스크립트는 변수를 선언할때 const, let, var를 사용합

hasumang.tistory.com


3. 지정된 배열의 크기를 넘어선 부분을 불러왔는지

 배열의 크기를 5로 지정했는데 인덱스가 6인 부분을 불러오면 안되겠죠? 예를 들어서 const arr=[1,2,3,4,5]; 로 선언했는데, arr[10]에 접근하려하면 당연히 선언하지 않았으니 없다고 뜰 것입니다. 배열뿐만 아니라 다른 데이터 형태도 마찬가지예요. 혹시 반복문으로 범위를 초과하는 부분을 불러오진 않았는지 확인해보세요!


감사합니다!

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함