В чем разница между переменной 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 не равны друг другу, и различие между ними может повлиять на логику вашего кода.