Проверяет понимание различий между операторами || и ?? в JavaScript и их влияния на обработку null и undefined.
Оператор || (логическое ИЛИ) возвращает правый операнд, если левый является ложным (falsy): false, 0, '', NaN, null, undefined. Оператор ?? (nullish coalescing) возвращает правый операнд только если левый равен null или undefined. Это ключевое отличие: ?? не трогает другие ложные значения.
Если вы хотите подставить значение по умолчанию для любого ложного значения, используйте ||. Например, при чтении настроек, где пустая строка или ноль должны быть заменены на дефолт. Но если такие значения допустимы, || приведёт к неожиданной замене.
Если объект может быть null или undefined, но другие ложные значения (например, 0 или '') являются валидными, предпочтителен ??. Это часто встречается при работе с числами, строками или булевыми флагами.
Нельзя смешивать ?? с || или && без скобок — это вызовет SyntaxError. Например, a ?? b || c недопустимо, нужно писать (a ?? b) || c.
const value = 0;
const result1 = value || 10; // 10, так как 0 ложный
const result2 = value ?? 10; // 0, так как 0 не null/undefined
const obj = null;
const safe = obj ?? { default: true }; // { default: true }
// Ошибка: SyntaxError
// const bad = a ?? b || c;
// Правильно:
const good = (a ?? b) || c;Используйте ?? для явной обработки только null/undefined, когда другие ложные значения значимы. || подходит для общих значений по умолчанию. Помните о синтаксическом ограничении при смешивании операторов.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию