본문 바로가기
DEV ::/Etc

ReferenceError: "x" is not defined

by bbombi 2023. 3. 28.

 

 존재하지 않는 "X" 라는 변수를 참조하는 곳이 있을 떄의 에러.

즉, 어디선가 선언되지 않은 변수를 쓰고 있다는 것이니

얼른 찾아서 고쳐주면 됨.

 

예시 1

 

hello.substr(0,2); // Uncaught ReferenceError: hello is not defined

 

이때 hello라는 변수가 선언되지 않았기에 해당 메소드를 실행할수없다.

 

var hello = "hello";
hello.substr(0,2);
console.log("hello는 ", hello.substr(0,2)); // hello는 he

 

위처럼 먼저 hello를 선언해줘야 한다.

 

 

예시 2

그 외에도 함수 내 정의된 변수를 해당 함수 밖에서 사용하려 했을 때도 이 에러가 발생한다.

 

function numbers () {
  var num1 = 2,
      num2 = 3;
  return num1 + num2;
}

console.log(num1); // ReferenceError: num1 is not defined

 

함수 내에 정의 된 변수는 함수 내에서만 쓸 수 있다.

 

그러나 아래처럼 전역 함수에선 전역 변수를 쓸 수 있다.

 

var num1 = 2,
    num2 = 3;

function numbers () {
  return num1 + num2;
}

console.log(num1); // 2

 

(* 함수를 사용하기 위해 할당한 메모리 공간이 함수가 끝나면서

해제되어 그 부분의 메모리를 참고 할 수 없게 되기 때문에 전역 변수가 아닌 경우는 사용 할 수 없게 되는 것.)

 

 

 

댓글