ReferenceError: "x" is not defined

Виняток JavaScript "variable is not defined" ("змінна не означена") трапляється, коли десь відбувається звертання до відсутньої змінної.

Повідомлення

ReferenceError: "x" is not defined (браузери на основі V8 і Firefox)
ReferenceError: Can't find variable: x (Safari)

Тип помилки

ReferenceError.

Що пішло не так?

Десь відбувається звертання до відсутньої змінної. Така змінна повинна бути оголошена, тобто слід пересвідчитися, що вона доступна для поточних сценарію та області видимості.

Примітка: При завантаженні бібліотеки (наприклад, 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

Дивіться також