Вопрос проверяет понимание работы с значениями по умолчанию и разницы между null/undefined и другими falsy-значениями.
Оператор ?? возвращает правый операнд, только если левый равен null или undefined. Во всех остальных случаях возвращается левое значение. В отличие от ||, он не считает 0, false или пустую строку ошибочными значениями. Это делает ?? безопасным для задания значений по умолчанию.
?? решает типичную проблему оператора ||, который подменяет значение по умолчанию при любом falsy-значении.
Nullish coalescing (??) — оператор, возвращающий правый операнд, если левый равен null или undefined.
const value = 0;
const result = value ?? 10;
console.log(result); // 0
Для сравнения с ||:
const result = value || 10;
console.log(result); // 10
?? особенно полезенЗначение 0 является валидным.
Пустая строка "" имеет смысл.
false — корректное логическое состояние.
function init(options) {
const timeout = options.timeout ?? 3000;
const debug = options.debug ?? false;
// ...
}
Нельзя смешивать ?? с || или && без скобок.
// Ошибка
a ?? b || c;
// Правильно
a ?? (b || c);
?? стоит использовать для задания значений по умолчанию, когда важно отличать null/undefined от других допустимых значений.