Оператор || заменит пустую строку, а ?? заменяет только null и undefined. Для данного контракта || подходит, но строку из пробелов нужно отдельно нормализовать.
Когда для значения по умолчанию нужен ||, а не ??
Оператор || заменит пустую строку, а ?? заменяет только null и undefined. Для данного контракта || подходит, но строку из пробелов нужно отдельно нормализовать.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Пустое имя пользователя должно отображаться как «Гость». Сервер возвращает строку, null или undefined. Сравните name || 'Гость' и name ?? 'Гость' для пустой строки.
Ответ
Оператор || заменит пустую строку, а ?? заменяет только null и undefined. Для данного контракта || подходит, но строку из пробелов нужно отдельно нормализовать.
Используйте const displayName = name?.trim() || 'Гость'. Для чисел выбор часто противоположный: count ?? 10 сохраняет допустимый ноль, тогда как count || 10 заменит его. Здесь «ошибка» варианта с ?? — пустая подпись, а не исключение JavaScript. Выбирайте оператор по допустимым данным, а не по внешней краткости.