Время чтения: 1 мин.
В JavaScript два специальных значения, null
и undefined
, обозначают отсутствие значения, но используются в разных контекстах. Новички часто путают их, поэтому давайте разберемся, чем они отличаются и когда применять каждое из них.
1. Что такое undefined
?
undefined
означает, что значение не было задано.
Когда появляется undefined
?
- Переменная объявлена, но не инициализирована:
let x;
console.log(x); // undefined
- Функция не возвращает значение:
function foo() {}
console.log(foo()); // undefined
- Обращение к несуществующему свойству объекта:
const obj = { a: 1 };
console.log(obj.b); // undefined
- Аргумент функции не передан:
function bar(a) { console.log(a); }
bar(); // undefined
Тип undefined
typeof undefined
возвращает "undefined"
:
console.log(typeof undefined); // "undefined"
2. Что такое null
?
null
— это явное указание на отсутствие значения.
Когда используется null
?
- Разработчик явно указывает, что значение отсутствует:
let y = null;
console.log(y); // null
- Функция возвращает
null
, если ничего не найдено:
document.getElementById("not-exist"); // null
Тип null
typeof null
возвращает "object"
(это баг в JS, который не исправлен для совместимости):
console.log(typeof null); // "object" (но это не объект!)
3. Сравнение null
и undefined
- Нестрогое равенство (
==
):null == undefined
→true
(специальное правило JS). - Строгое равенство (
===
):null === undefined
→false
(разные типы).
console.log(null == undefined); // true
console.log(null === undefined); // false
4. Когда что использовать?
undefined
— когда значение отсутствует «по умолчанию» (не задано).null
— когда вы явно указываете, что значение пустое.
Пример
function findUser(id) {
if (id === 1) return { name: "Alice" };
return null; // явно говорим: пользователь не найден
}
const user = findUser(999);
if (user === null) {
console.log("Пользователь не найден");
}
Вывод
Критерий | undefined | null |
---|---|---|
Значение | Не задано (по умолчанию) | Явно указанное отсутствие |
Тип | "undefined" | "object" (баг в JS) |
Использование | Переменные без значения | Явное «ничего» |
Совет:
- Используйте
null
, когда хотите явно указать на отсутствие значения. undefined
обычно возникает автоматически, когда что-то не определено.
Теперь вы знаете разницу и сможете избежать ошибок в коде! 🚀
Добавить комментарий