До появления оператора (
??) все использовали логическое ИЛИ для задания дефолтных значений. Но у ИЛИ есть скрытая проблема: он считает ложными числа 0 и пустые строки:const config = {
volume: 0 // Пользователь выкрутил звук в ноль
};
const currentVolume = config.volume || 50;
console.log(currentVolume); // Выведет 50! Ноль проигнорировался.Оператор (??) заменяет значение только в том случае, если слева стоит
null или undefined.const currentVolume = config.volume ?? 50;
console.log(currentVolume); // Выведет 0. Всё работает корректно!
Используйте (||) для строк или булевых значений, а (??) — когда работаете с числами, где ноль имеет значение.
