Необязательная цепочка: безопасное чтение отсутствующего уровня
Оператор ?.
Назначение
Оператор ?. прекращает определённый доступ или вызов, если проверяемая часть равна null или undefined.
Как это работает
При остановке результатом становится undefined. Оператор не скрывает любые ошибки: вызов существующего, но не вызываемого значения всё ещё может завершиться TypeError. Необъявленное имя также не становится допустимым.
Пример
const user={profile:{name:'Анна'}};
console.assert(user.profile?.name==='Анна');
console.assert(({}).profile?.name===undefined);
console.assert(({profile:null}).profile?.name===undefined);
Что должно получиться
Имя читается в полном объекте, а два отсутствующих уровня дают undefined. Ни одна проверка не создаёт профиль и не заполняет его значениями автоматически.
Граница применения и частая ошибка
Не расставляйте ?. везде, маскируя нарушение обязательной схемы API. Для действительно обязательного поля лучше явно сообщить об ошибке данных, чем молча показать пустой интерфейс.
Самостоятельная проверка
Проверьте объект с профилем, без профиля и с null вместо профиля. Затем решите, где отсутствие допустимо, а где оно должно считаться ошибкой приложения.
JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.