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

Оператор ?? : запасное значение только для null и undefined

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

Назначение

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

Как это работает

Ноль, пустая строка и false сохраняются. Это отличает ?? от ||, который реагирует на все ложные значения. Смешение с && или || без скобок имеет синтаксические ограничения.

Пример

console.assert((0??10)===0);
console.assert((false??true)===false);
console.assert((''??'запас')==='');
console.assert((null??10)===10);
console.assert((0||10)===10);

Что должно получиться

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

Граница применения и частая ошибка

Не заменяйте все || на ?? автоматически. Если пустая строка действительно означает отсутствие ввода, это отдельное правило, которое нужно выразить явно.

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

Сравните 0, false, пустую строку, null и undefined для обоих операторов. Объясните, какие из этих значений допустимы у счётчика непрочитанных сообщений.

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

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