Выбор ответа Middle Современный синтаксис обновлено
Короткое замыкание опциональной цепочки
Вопрос
Что выведет код?
const user = null;
console.log(user?.profile.name);
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: undefined. ?. при null или undefined слева прекращает вычисление всей оставшейся цепочки и возвращает undefined.
Варианты ответа
- TypeError: Cannot read properties of undefined (reading 'name')
undefinedправильный ответnull- Пустая строка
Разбор
?. при null или undefined слева прекращает вычисление всей оставшейся цепочки и возвращает undefined. Поэтому .name не читается, и ошибки нет, хотя после profile стоит обычная точка. Ошибка была бы, если бы user существовал, а profile нет: тогда нужен второй ?.. null не возвращается, хотя user равен null: результат опциональной цепочки всегда undefined.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Объекты как ключи обычного объекта
Следующий вопрос
Object.groupBy и объект без прототипа