Загрузка...

null и undefined

Вы уже знаете логические значения — ясное да или нет. Программе иногда нужно сказать «здесь нет значения.» В JavaScript два обычных «пустых»: undefined и null. Они похожи, но история у каждого своя. Здесь разделим их, чтобы позже преобразования и проверки не путали.

В чём разница между null и undefined?

undefined обычно значит «сюда ещё ничего не положили» — переменная с let без присваивания или отсутствующая часть. null значит «пусто намеренно»: вы (или API) ставите null, чтобы очистить слот. Проверьте через typeof: typeof undefined даёт "undefined", а typeof null — старый quirk "object". Для сравнения предпочитайте ===. Оба falsy, но это не булевы (true / false).

Набор инструментов для пустых значений

📊 null против undefined для начинающих

Идея Пример Результат / заметка
Отсутствует / не присвоено let x; затем x undefined
Намеренная пустота let box = null пустоту выбрали вы
typeof для отсутствующего typeof undefined "undefined"
typeof для пустого typeof null "object" (quirk — всё равно пусто)
Строгое сравнение box === null true, если в box лежит null
Мягкое сравнение null == undefined true с == — для ясности лучше ===

undefined — ещё не присвоено

Объявите имя через let и ничего не присваивайте. Значение — undefined. Выведите значение и typeof, чтобы закрепить метку "undefined".

undefined по умолчанию

javascript
let nickname;
console.log(nickname);
console.log(typeof nickname);

null — пусто намеренно

Ставьте null, когда нужно ясно сказать «нет значения». Это не то же самое, что забыть присваивание.

намеренно присвоить null

javascript
let selected = null;
console.log(selected);
console.log(typeof selected);

typeof рядом

Посмотрите оба результата вместе. Помните: typeof null с "object" — quirk, а не полноценный урок про объекты.

typeof для undefined и null

javascript
console.log(typeof undefined);
console.log(typeof null);
let a;
let b = null;
console.log(typeof a);
console.log(typeof b);

Для null и undefined предпочитайте ===

=== проверяет и значение, и тип. Используйте, когда нужно «точно null» или «точно undefined». С == null и undefined могут совпасть — при обучении это легко перепутать.

строгие проверки с ===

javascript
let user = null;
let title;
console.log(user === null);
console.log(title === undefined);
console.log(user === undefined);

Мягкий == может их смешать

С == null и undefined совпадают. Выведите один раз — дальше держите реальные проверки на ===.

мягкий == между null и undefined

javascript
console.log(null == undefined);
console.log(null === undefined);

Первая строка даёт true, потому что == мягкий. Вторая — false. Пишите настоящие проверки через ===, чтобы намерение было ясно.

Покажите оба пустых на странице

Храните имя в стиле undefined и одно с null, затем короткие подписи через textContent.

Подписи страницы для null и undefined

html
<!DOCTYPE html>
<html>
<head>
<title>null and undefined — labels</title>
</head>
<body>
<p id="out">…</p>
<script>
let title;
let avatar = null;
document.getElementById("out").textContent =
"title=" + title + " | avatar=" + avatar;
</script>
</body>
</html>

Абзац показывает оба пустых в одной строке. Смените только avatar на короткую строку, обновите страницу и убедитесь: правая половина меняется, а title остаётся undefined.

Попробуйте сами

  1. Объявите let city; — выведите city и typeof city без присваивания.
  2. Поставьте let bag = null; — выведите значение и typeof bag (ждите quirk "object").
  3. Выведите typeof undefined и typeof null рядом.
  4. Сравните через ===: переменную с null с null и с undefined.
  5. Один раз выведите null == undefined, затем пишите реальные проверки через ===.
  6. В HTML-демо задайте avatar = "pic.png", обновите и прочитайте новую строку.

Частые ошибки

  • Считать null и undefined всегда взаимозаменяемыми — смысл разный (намеренно vs не присвоено)
  • Паниковать из-за typeof null → "object" — quirk; null всё равно намеренная пустота
  • Полагаться на == между ними, не замечая мягкого совпадения
  • Называть их булевыми — это пустые значения; булевы только true / false
  • Путать пустую строку "" с null — "" всё ещё строка

Кратко

  • undefined: отсутствует / ещё не присвоено; typeof → "undefined"
  • null: намеренная пустота, которую задаёте вы; typeof → "object" (quirk)
  • Для ясных проверок предпочитайте ===; оба falsy, но не булевы
  • Пустая строка "" — текст, не то же самое что null или undefined
  • Дальше: преобразование типов — намеренно менять значение одного вида на другой

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
8
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху