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делает код предсказуемым и легче отлаживаемым.