Оператор ?? : запасное значение только для 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 в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.