Thanks to visit codestin.com
Credit goes to developer.mozilla.org

This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

ReferenceError: "x" is not defined

메시지

    ReferenceError: "x" is not defined

에러 타입

ReferenceError.

무엇이 잘못되었을까?

존재하지 않는 변수를 참조하는 곳이 있습니다. 이 변수는 선언되어야 합니다. 또는, 현재 스크립트나 scope 에서 사용이 가능하도록 해야합니다.

참고 : 라이브러리(예를 들면 jQuery와 같은)의 로딩은, 반드시 코드에서 "$"와 같은 라이브러리 변수에 접근하기 이전에 수행되어야 합니다. 라이브러리를 로딩하는 <script> 태그가 그 변수를 사용하는 코드보다 앞에 위치하도록 하세요.

선언되지 않은 변수

js
foo.substring(1); // ReferenceError: foo is not defined

"foo" 변수는 어디에도 선언되지 않았습니다. String.prototype.substring() 메소드가 작동하도록 하기 위해서는 문자열을 필요로 합니다.

js
var foo = "bar";
foo.substring(1); // "ar"

잘못된 스코프

변수는 현재의 실행 흐름 내에서 이용 가능해야합니다. 함수 내부에 정의된 변수는 다른 외부의 함수에서는 접근할 수 없습니다. 그 때문에, 변수는 함수의 스코프 내부에서만 정의 됩니다.

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

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

그러나, 함수는 모든 변수와 정의된 스코프 안에 정의된 함수에 접근할 수 있습니다. 따라서, 전역으로 정의된 함수는 전역에 정의된 모든 변수에도 접근할 수 있습니다.

js
var num1 = 2,
  num2 = 3;

function numbers() {
  return num1 + num2;
}

console.log(num1); // 2

참조