Поиск по сайту
Ctrl + K
Вопросы по JS

В чем разница между переменной JavaScript, которая является: null, undefined или undeclared?

В JavaScript часто встречаются три состояния переменных: null, undefined и undeclared. Каждое из этих состояний имеет свое значение и поведение, и важно понимать, чем они отличаются.

1. null

null — это явное присваивание "пустого" значения переменной. Это значение указывает, что переменная была инициализирована, но в данный момент не содержит никаких данных. То есть переменная существует, но в нее не записано никакое полезное значение.

Пример:

let a = null;
console.log(a);  // null
console.log(typeof a);  // "object" (не ошибка, это исторический баг в JS)

Основные моменты:

  • null — это примитивное значение, которое представляет собой "пустую" или "незаполненную" переменную.
  • Чаще всего используется, когда необходимо явно обозначить отсутствие значения.

2. undefined

undefined — это значение, которое присваивается переменной, если она была объявлена, но еще не инициализирована, или если функция не возвращает значение. Это также значение по умолчанию для неинициализированных параметров функции.

Пример:

let b;
console.log(b);  // undefined
console.log(typeof b);  // "undefined"

function example() {}
console.log(example());  // undefined, потому что функция не возвращает значения

Основные моменты:

  • undefined — это значение по умолчанию для переменных, которые объявлены, но еще не присвоены значением.
  • Также используется для возвращаемых значений функций, если они ничего не возвращают.

3. undeclared (необъявленная переменная)

Переменная считается "необъявленной", если она используется без предварительного объявления через let, const или var. В отличие от null или undefined, попытка обратиться к необъявленной переменной приведет к ошибке.

Пример:

console.log(c);  // ReferenceError: c is not defined

Основные моменты:

  • "Необъявленная переменная" означает, что переменная никогда не была объявлена.
  • При попытке доступа к необъявленной переменной возникает ошибка типа ReferenceError.

4. Сравнение null, undefined и необъявленных переменных

СостояниеЧто это значитЗначениеПоведение при использовании
nullЯвно присвоенное пустое значениеnullПеременная существует, но не имеет значения.
undefinedНеинициализированная переменнаяundefinedПеременная существует, но еще не имеет значения.
undeclaredНеобъявленная переменнаяНе существуетОшибка при попытке доступа (ReferenceError).

Пример с null и undefined:

let x = null;  // переменная существует и явно пуста
let y;          // переменная существует, но не имеет значения (undefined)

console.log(x === y);  // false, потому что null и undefined — разные значения

5. Заключение

  • null — это явно присвоенное "пустое" значение переменной.
  • undefined — это неявное значение, которое присваивается переменной, если она была объявлена, но не инициализирована.
  • undeclared — это необъявленная переменная, доступ к которой вызывает ошибку.

Важно понимать, что null и undefined не равны друг другу, и различие между ними может повлиять на логику вашего кода.