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.

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

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

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

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