PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

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

Основы языка

`null` и `undefined` оба означают «нет значения», но с разным смыслом: undefined — значение не задано системой, null — намеренно установленное отсутствие значения.

undefined

Появляется автоматически:

  • Объявленная, но не инициализированная переменная.
  • Отсутствующее свойство объекта.
  • Функция без return.
  • Не переданный аргумент.
let x;
console.log(x); // undefined

null

Присваивается разработчиком осознанно как «значение отсутствует».

let user = null; // пока пользователя нет

Сравнение

null == undefined;  // true — нестрогое равенство
null === undefined; // false — разные типы
typeof undefined;   // 'undefined'
typeof null;        // 'object' — историческая ошибка

На практике

  • Проверить оба сразу: value == null (ловит и null, и undefined).
  • Значения по умолчанию: ?? срабатывает и на null, и на undefined:
const name = user.name ?? 'Гость';

Коротко для собеседования

undefined — «значение не задано» (по умолчанию от движка), null — «намеренно пусто» (от программиста). Нестрого равны (==), но имеют разные типы. Проверка value == null покрывает оба.

Другие вопросы раздела