ReferenceError: "x" is not defined
메시지
ReferenceError: "x" is not defined
에러 타입
무엇이 잘못되었을까?
예
선언되지 않은 변수
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