Оператор nullish coalescing (??) и оператор логического OR (||) оба предоставляют резервные значения, но различаются тем, какие значения запускают резервное поведение.
||Оператор || возвращает правый операнд, когда левая часть — это любое falsy значение, включая:
nullundefined0"" (пустая строка)falseNaN??Оператор ?? более избирателен — он только считает следующие два значения nullish:
nullundefinedЛюбое другое falsy значение слева считается корректным и возвращается как есть.
0 || 42 // возвращает 42 — потому что 0 это falsy
0 ?? 42 // возвращает 0 — потому что 0 это не null и не undefined
??Используй ??, когда хочешь задать резервное значение только для отсутствующих значений, при этом сохраняя намеренные falsy значения вроде 0, false или "".
Например, при чтении числового параметра, задаваемого пользователем:
const volume = userSetting ?? 50;
// Использует 50 только если userSetting это null/undefined,
// но не если пользователь явно установил его в 0
Использование || здесь бы некорректно перезаписало валидное значение 0.
Оператор nullish coalescing (??) возвращает правый операнд только когда левая часть — это null или undefined, в то время как оператор логического ИЛИ (||) возвращает правый операнд для любого falsy значения.
Новый — ещё не проверен сообществом
Вы