Выбор ответа Middle Современный синтаксис обновлено

?? вместе с || без скобок

Вопрос

Что произойдёт при разборе этой строки?

const title = custom || fallback ?? 'Без названия';

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: SyntaxError: ?? нельзя смешивать с и && без скобок. Спецификация запрещает комбинировать ?? с или && в одном выражении без явных скобок, потому что приоритет неочевиден.

Варианты ответа

  1. Сначала выполнится ??, потом ||
  2. Сначала выполнится ||, потом ??
  3. Операторы выполнятся слева направо с одинаковым приоритетом
  4. SyntaxError: ?? нельзя смешивать с || и && без скобокправильный ответ

Разбор

Спецификация запрещает комбинировать ?? с || или && в одном выражении без явных скобок, потому что приоритет неочевиден. Это ошибка разбора, код не запустится. Нужно выбрать порядок явно: (custom || fallback) ?? 'Без названия' или custom || (fallback ?? 'Без названия'). Варианты про порядок выполнения описывают поведение, которого нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме