Оператор ?? против ||
Если нужно подставить значение по умолчанию, важно не перепутать || и ??.
Оператор || считает "пустыми" 0, false, '', null, undefined и NaN, а ?? срабатывает только на null и undefined.
На практике это особенно важно в конфигурации, фильтрах и настройках UI, где 0 и false часто являются корректными бизнес-значениями.
const config = {
port: 0,
debug: false,
cache: null
};
const portNullish = config.port ?? 3000; // 0
const portOr = config.port || 3000; // 3000
const debugNullish = config.debug ?? true; // false
const debugOr = config.debug || true; // true
const cacheNullish = config.cache ?? 'memory'; // "memory"
const cacheOr = config.cache || 'memory'; // "memory"
Используйте ??, когда 0, false и пустая строка - валидные значения и их нельзя терять.
|| оставляйте для случаев, где любое falsy-значение действительно нужно заменить дефолтом.
Хорошая проверка: если хотите заменить только "отсутствие" значения, берите ??; если хотите заменить любое "пустое" состояние, подходит ||.