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

Короткое замыкание опциональной цепочки

Вопрос

Что выведет код?

const user = null;
console.log(user?.profile.name);

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

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

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

Коротко

Правильный ответ: undefined. ?. при null или undefined слева прекращает вычисление всей оставшейся цепочки и возвращает undefined.

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

  1. TypeError: Cannot read properties of undefined (reading 'name')
  2. undefinedправильный ответ
  3. null
  4. Пустая строка

Разбор

?. при null или undefined слева прекращает вычисление всей оставшейся цепочки и возвращает undefined. Поэтому .name не читается, и ошибки нет, хотя после profile стоит обычная точка. Ошибка была бы, если бы user существовал, а profile нет: тогда нужен второй ?.. null не возвращается, хотя user равен null: результат опциональной цепочки всегда undefined.

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

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

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