Вебсправочник
Справочник JavaScript

Условия if и оператор ??

Как выбирать ветку выполнения и сохранять допустимые нули и пустые значения.

Основная идея

If запускает блок при истинном условии. Условием может быть сравнение или само значение, которое преобразуется к логическому. Это удобно, но проверка if(value) одновременно отбрасывает ноль, пустую строку, null и undefined.

Оператор ?? выбирает запасное значение только для null и undefined. В отличие от ||, он сохраняет ноль и false. Используйте его, когда отсутствие значения отличается от корректного отрицательного или нулевого результата.

Пример JavaScript

const savedCount = 0;
const count = savedCount ?? 10;
if (count === 0) {
  console.log("Пока нет материалов");
} else {
  console.log(`Материалов: ${count}`);
}

Счётчик останется нулём, поэтому выполнится первая ветка. Запасное значение 10 не подменяет корректное значение 0.

Частая ошибка

Не смешивайте длинные цепочки тернарных операторов ради краткости. Если ветки сложно прочитать, обычный if/else лучше выражает логику.

Самостоятельная проверка

Повторите пример со значениями null, undefined и 3. Запишите ожидаемую ветку до запуска, а затем сравните результат.

Код здесь показан для изучения. Встроенная песочница сайта выполняет только HTML/CSS. JavaScript проверяйте в собственном учебном файле или консоли своего тестового проекта; не вставляйте непонятный код на страницах с личными данными.

Следующие темы: сравнения, функции.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.