Null

Null

Технический фундамент состояния null

null в инженерной модели — явный маркер «значение отсутствует по замыслу»:

  • он отличается от технического undefined;
  • требует явной проверки перед доступом к полям;
  • должен быть предусмотрен в контракте функции/объекта;
  • полезен для fallback-веток UI и API-ответов.

Явная работа с null снижает число падений на пустых состояниях данных.

Что означает null в прикладном коде

null - это специальное значение, которое разработчик ставит осознанно: "здесь сейчас нет значения". Это не "ошибка языка", а явный маркер пустоты по бизнес-логике.

Ключевой момент: null чаще всего означает "значение известно как отсутствующее".

Проверь себя: чем null отличается от "забыли присвоить значение"?

Где null реально используется

  • отсутствие выбранного пользователя;
  • не загруженные данные профиля;
  • необязательное поле, которое пока пусто;
  • результат поиска, когда объект не найден.
let selectedUser = null;

if (selectedUser === null) {
  console.log('Пользователь не выбран');
}

Смотри, что важно: сравнивай с null явно (=== null), чтобы не ловить ложные совпадения.

Историческая особенность typeof null

console.log(typeof null); // 'object'

Это исторический баг JavaScript, который сохранился ради совместимости.

Здесь часто путаются: null не объект по смыслу, хотя typeof говорит 'object'.

Проверь себя: почему для проверки на null нельзя полагаться на typeof?

Безопасная проверка объектов

Когда данные могут быть null, перед доступом к полям нужна проверка.

const profile = null;

if (profile !== null) {
  console.log(profile.name);
}

Без проверки будет runtime-ошибка: Cannot read properties of null.

В современном JS часто используют optional chaining, чтобы безопасно читать поле:

const profile = null;
console.log(profile?.name); // undefined

Мини-сценарий: карточка пользователя

function getDisplayName(user) {
  if (user === null) return 'Гость';
  return user.name;
}

Измени вход:

  • объект пользователя -> имя;
  • null -> fallback.

Это типичный UI-сценарий с понятным запасным поведением.

null и сравнения

null == undefined дает true, но это не значит, что их стоит смешивать.

console.log(null == undefined); // true
console.log(null === undefined); // false

Анти-провал: в прикладном коде предпочитай строгие сравнения, чтобы явно различать состояния.

Частые ошибки новичков

  • Путать null и undefined как "одно и то же".
  • Проверять null через typeof.
  • Обращаться к полям без проверки на null.
  • Использовать == и получать неочевидные условия.

Проверь себя: когда лучше возвращать null, а когда выбрасывать ошибку?

Что будет, если изменить вход

Если функция ожидает объект, но получает null, без проверки она упадет. С проверкой можно вернуть fallback или понятную ошибку. Это особенно важно в данных API, где часть полей может быть пустой по контракту.

Краткий итог

  • null - осознанный маркер отсутствия значения.
  • Он часто используется в бизнес-логике как корректное состояние.
  • typeof null исторически дает 'object', на это нельзя опираться для проверки.
  • Перед доступом к полям проверка на null обязательна.
  • Явное различение null и undefined делает код предсказуемым и легче отлаживаемым.