Выбор ответа Junior Современный синтаксис спрашивают часто обновлено
Громкость 0 превращается в 50
Вопрос
Пользователь выставил громкость 0, а приложение ставит 50. Какая замена строки исправит баг?
const volume = settings.volume || 50;
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: const volume = settings.volume ?? 50;. подставляет правую часть для любого ложного значения, а 0 ложный. ?? подставляет её только для null и undefined, поэтому 0 сохранится. && вернёт 0 для нуля, но 50 для любой ненулевой громкости, это сломает всё остальное. ?. защищает от…
Варианты ответа
const volume = settings.volume && 50;const volume = settings.volume ?? 50;правильный ответconst volume = settings?.volume || 50;const volume = !!settings.volume || 50;
Разбор
|| подставляет правую часть для любого ложного значения, а 0 ложный. ?? подставляет её только для null и undefined, поэтому 0 сохранится. && вернёт 0 для нуля, но 50 для любой ненулевой громкости, это сломает всё остальное. ?. защищает от отсутствия settings, но || по-прежнему съест ноль. !! превращает значение в булево, и громкость станет true или 50.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.