Правильная проверка переменной на null в JavaScript

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Примените следующий подход:

JS
Скопировать код
if (myVar !== null) {
  // Код выполнится, если myVar точно не равна null
}

Оператор строгого неравенства !== обеспечит точную проверку, успешно отличая null от undefined и других "ложных" значений, включая 0, "", false или NaN.

Кинга Идем в IT: пошаговый план для смены профессии

Анализ проверки на null

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

Проверка на "ложность" значений

Для базовой проверки используйте:

JS
Скопировать код
if (myVar) {
  // myVar не является "ложным" значением!
}

Такой подход позволит избавиться от null, undefined, 0, "", false и NaN. Таким образом, if (myVar) становится хорошим решением для отбраковки всех "неистинных" значений.

Использование строгого равенства

Будьте внимательны при использовании == и ===. Оператор === проводит проверку и на тип, и на значение, не применяя приведение типов, что невероятно полезно при строгих сравнениях.

Защита от неоднозначных данных

Когда работаешь с внешними данными, приходится прибегать к тактике оборонительного программирования. Явные проверки на null, т.е. (!== null), обезопасят ваш код от некорректных данных, наподобие строки "null" и других.

Определение приоритетов при проверке

Выбор между общей проверкой на истинность (if (myVar)) и явной проверкой на null (if (myVar !== null)) зависит от целей и требований вашего программного кода.

Визуализация

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

Markdown
Скопировать код
В коробке находятся: [🍎, 🗝️, 🧸, 💎, ✉️]
Задача: Проверить, является ли 💎 настоящим драгоценным камнем.

Вот как мы проводим эту проверку:

JS
Скопировать код
let item = 💎; // Берем предмет из коробки.
if (item !== null) {
    // Отлично! У нас настоящий драгоценный камень!
    console.log("Найден настоящий драгоценный камень 💎, это не подделка!");
} else {
    // Камень не обнаружен, пусто
    console.log("Камня в коробке не нашлось, возможно, ошибка. 🕳️");
}

ПОДСКАЗКА: При использовании !== null ошибка или обман исключаются. 🕵️‍♂️✅

Специфические случаи

Строки, выдающие себя за null

Если вы столкнулись с размышляющими проблемами, например с строкой "null", вот ваше решение:

JS
Скопировать код
let myVar = "null";
if (myVar !== null && myVar !== "null") {
  // Это совершенно точно не null!
}

Не забывайте о таких тонкостях для избежания путаницы в данных!

Непредсказуемые типы данных

В мире, где значения переменных порой поражают, важно оставаться на чеку. Для подобных целей JavaScript предлагает всем нужные инструменты:

JS
Скопировать код
const isValid = (typeof myVar !== "undefined" && myVar);

if (isValid) {
  // Великолепно! Это не null, не undefined, не false... по-видимому, все в порядке!
}

Берегитесь автоматического приведения типов

Неявное приведение типов может привести к ошибкам при использовании ==. Чтобы избежать неприятных сюрпризов, всегда используйте === при сравнениях.

Полезные материалы

  1. Falsy – Глоссарий веб-документации MDN — Знакомство с "ложными" значениями в JavaScript.
  2. Строгое равенство (===) – JavaScript | MDN — Руководство по использованию строгого равенства для точных сравнений.
  3. Оператор нулевого слияния (??) – JavaScript | MDN — Введение в оператор нулевого слияния и его применение при работе с null.
  4. Есть ли стандартная функция для проверки на null, undefined или пустые переменные в JavaScript? – Stack Overflow — Обсуждение способов проверки на null в JavaScript.
  5. Истинные и ложные значения: когда в JavaScript не все одинаково — SitePoint — Обзор истинных и ложных значений в JavaScript.
  6. Какой оператор равенства ( против =) следует использовать в сравнениях JavaScript? – Stack Overflow — Знаменитое обсуждение операторов равенства.