Правильная проверка переменной на null в JavaScript
Быстрый ответ
Примените следующий подход:
if (myVar !== null) {
// Код выполнится, если myVar точно не равна null
}
Оператор строгого неравенства !==
обеспечит точную проверку, успешно отличая null
от undefined
и других "ложных" значений, включая 0
, ""
, false
или NaN
.
Анализ проверки на null
Проверка на null
в JavaScript не всегда представляет собой прозрачный процесс, поэтому мы изучим его детальнее.
Проверка на "ложность" значений
Для базовой проверки используйте:
if (myVar) {
// myVar не является "ложным" значением!
}
Такой подход позволит избавиться от null
, undefined
, 0
, ""
, false
и NaN
. Таким образом, if (myVar)
становится хорошим решением для отбраковки всех "неистинных" значений.
Использование строгого равенства
Будьте внимательны при использовании ==
и ===
. Оператор ===
проводит проверку и на тип, и на значение, не применяя приведение типов, что невероятно полезно при строгих сравнениях.
Защита от неоднозначных данных
Когда работаешь с внешними данными, приходится прибегать к тактике оборонительного программирования. Явные проверки на null
, т.е. (!== null
), обезопасят ваш код от некорректных данных, наподобие строки "null"
и других.
Определение приоритетов при проверке
Выбор между общей проверкой на истинность (if (myVar)
) и явной проверкой на null
(if (myVar !== null)
) зависит от целей и требований вашего программного кода.
Визуализация
Визуальное представление материала облегчает его усвоение. В качестве наглядного примера рассмотрим проверку на null
:
В коробке находятся: [🍎, 🗝️, 🧸, 💎, ✉️]
Задача: Проверить, является ли 💎 настоящим драгоценным камнем.
Вот как мы проводим эту проверку:
let item = 💎; // Берем предмет из коробки.
if (item !== null) {
// Отлично! У нас настоящий драгоценный камень!
console.log("Найден настоящий драгоценный камень 💎, это не подделка!");
} else {
// Камень не обнаружен, пусто
console.log("Камня в коробке не нашлось, возможно, ошибка. 🕳️");
}
ПОДСКАЗКА: При использовании !== null
ошибка или обман исключаются. 🕵️♂️✅
Специфические случаи
Строки, выдающие себя за null
Если вы столкнулись с размышляющими проблемами, например с строкой "null"
, вот ваше решение:
let myVar = "null";
if (myVar !== null && myVar !== "null") {
// Это совершенно точно не null!
}
Не забывайте о таких тонкостях для избежания путаницы в данных!
Непредсказуемые типы данных
В мире, где значения переменных порой поражают, важно оставаться на чеку. Для подобных целей JavaScript предлагает всем нужные инструменты:
const isValid = (typeof myVar !== "undefined" && myVar);
if (isValid) {
// Великолепно! Это не null, не undefined, не false... по-видимому, все в порядке!
}
Берегитесь автоматического приведения типов
Неявное приведение типов может привести к ошибкам при использовании ==
. Чтобы избежать неприятных сюрпризов, всегда используйте ===
при сравнениях.
Полезные материалы
- Falsy – Глоссарий веб-документации MDN — Знакомство с "ложными" значениями в JavaScript.
- Строгое равенство (===) – JavaScript | MDN — Руководство по использованию строгого равенства для точных сравнений.
- Оператор нулевого слияния (??) – JavaScript | MDN — Введение в оператор нулевого слияния и его применение при работе с
null
. - Есть ли стандартная функция для проверки на null, undefined или пустые переменные в JavaScript? – Stack Overflow — Обсуждение способов проверки на
null
в JavaScript. - Истинные и ложные значения: когда в JavaScript не все одинаково — SitePoint — Обзор истинных и ложных значений в JavaScript.
- Какой оператор равенства ( против =) следует использовать в сравнениях JavaScript? – Stack Overflow — Знаменитое обсуждение операторов равенства.