← Все вопросы

Что означает ReferenceError: x is not defined в JavaScript?

Задан 1 месяц назад929 просмотров2 ответа
9

Запускаю скрипт, падает Uncaught ReferenceError: count is not defined. Переменную вроде объявлял. Чем ReferenceError is not defined отличается от TypeError и из-за чего обычно возникает?

2 ответа

13
✓ Принятый ответ — помог автору

ReferenceError: x is not defined значит: ты обращаешься к переменной/функции, которой в текущей области видимости вообще не существует. JS не знает такого имени.

Частые причины:

1. Опечатка в имени:

let count = 5;
console.log(cuont); // ReferenceError: cuont is not defined

2. Переменная объявлена в другой области (внутри другой функции/блока):

function init() {
  let secret = 42;
}
console.log(secret); // ReferenceError — secret виден только внутри init

3. Обращение до объявления при let/const (временная мёртвая зона):

console.log(x); // ReferenceError: Cannot access 'x' before initialization
let x = 5;

4. Забыл подключить файл/библиотеку, где определена функция — например, обращаешься к jQuery, не подключив саму библиотеку.

5. Опечатка/регистр — JS чувствителен к регистру: myVar и myvar это разные имена.

Чем отличается от TypeError:

  • ReferenceError — имени вообще НЕТ («не объявлено»).
  • TypeError — имя есть, но значение не того типа для операции (например, вызвал не-функцию или взял поле у undefined).

Как чинить: прочитай имя в ошибке, проверь — объявлена ли переменная, в той ли области, нет ли опечатки, подключён ли нужный скрипт. Чаще всего это банальная опечатка или переменная объявлена не там, где используется.

5

Памятка-различие на пальцах:

foo();          // ReferenceError: foo is not defined — такого имени нет

let bar = 5;
bar();          // TypeError: bar is not a function — имя есть, но это число

Если ошибка is not defined — ищи, где должна быть объявлена переменная (или подключён скрипт). Если is not a function/Cannot read properties — имя нашлось, проблема в типе значения.

Ваш ответ

Войдите, чтобы ответить на вопрос.