Опциональная цепочка '?.'
Опциональная цепочка ?. останавливает вычисление и возвращает undefined, если значение перед ?. равно undefined или null.
let user = {}; // пользователь без адреса
alert( user?.address?.street ); // undefined (без ошибки)
Другие варианты применения: ?.(), ?.[]
Опциональная цепочка ?. — это не оператор, а специальная синтаксическая конструкция, которая также работает с функциями и квадратными скобками.
Например, ?.() используется для вызова функции, которая может не существовать.
❗ Мы можем использовать ?. для безопасного чтения и удаления, но не для записи
Опциональная цепочка ?. не имеет смысла в левой части присваивания.
let user = null;
user?.name = "John"; // Ошибка, не работает
// то же самое что написать undefined = "John"
Итого
Синтаксис опциональной цепочки ?. имеет три формы:
- obj?.prop – возвращает obj.prop если
objсуществует, в противном случаеundefined. - obj?.[prop] – возвращает obj[prop] если
objсуществует, в противном случаеundefined. - obj.method?.() – вызывает obj.method(), если obj.method существует, в противном случае возвращает
undefined.
Как мы видим, все они просты и понятны в использовании. ?. проверяет левую часть на null/undefined и позволяет продолжить вычисление, если это не так.
Цепочка ?. позволяет безопасно получать доступ к вложенным свойствам.
🚀 Источник: https://learn.javascript.ru/optional-chaining