ReferenceError: "x" is not defined
Виняток JavaScript "variable is not defined" ("змінна не означена") трапляється, коли десь відбувається звертання до відсутньої змінної.
Повідомлення
ReferenceError: "x" is not defined (браузери на основі V8 і Firefox)
ReferenceError: Can't find variable: x (Safari)
Тип помилки
Що пішло не так?
Десь відбувається звертання до відсутньої змінної. Така змінна повинна бути оголошена, тобто слід пересвідчитися, що вона доступна для поточних сценарію та області видимості.
Примітка: При завантаженні бібліотеки (наприклад, jQuery) слід пересвідчитися, що вона завантажується до звертання до змінних цієї бібліотеки, як то "$". Слід поставити елемент
<script>
, котрий завантажує цю бібліотеку, до власного коду, що її використовує.
Приклади
Змінна не оголошена
foo.substring(1); // ReferenceError: foo is not defined
Змінна "foo" ніде не означена. Вона повинна бути якимсь рядком, аби метод String.prototype.substring()
спрацював.
const foo = "bar";
foo.substring(1); // "ar"
Не та область видимості
Змінна повинна бути доступна в поточному контексті виконання. Змінні, означені всередині функції, не можуть використовуватися ніде поза своєю функцією, тому що змінна означена лише в області видимості такої функції
function numbers() {
const num1 = 2;
const num2 = 3;
return num1 + num2;
}
console.log(num1); // ReferenceError num1 is not defined.
Утім, функція може звертатися до всіх змінних та функцій, означених всередині області видимості, в котрій означена вона сама. Інакше кажучи, функція, означена в глобальній області, може звертатися до всіх змінних, означених в глобальній області.
const num1 = 2;
const num2 = 3;
function numbers() {
return num1 + num2;
}
console.log(numbers()); // 5