Зачем нужен оператор ?.
Основы языка
Оператор `?.` (опциональная цепочка) нужен для безопасного доступа к вложенным свойствам объекта: если промежуточное значение `null` или `undefined`, выражение возвращает `undefined` вместо ошибки.
Что делает
Прерывает цепочку и возвращает undefined, если левая часть null/undefined:
const city = user?.address?.city;
// Если user или address = null/undefined → undefined (без ошибки)
// Без ?. → TypeError: Cannot read property 'city' of undefinedФормы
Доступ к свойству
obj?.prop;
obj?.['key'];Вызов метода
obj?.method?.(); // вызовет, только если method существует
callback?.(); // вызовет, только если callback заданДоступ к элементу массива
arr?.[0];Зачем нужен
- Безопасный доступ — не падать на отсутствующих вложенных данных (ответы API, опциональные поля).
- Меньше кода — заменяет цепочки
&&:
// Было
user && user.address && user.address.city;
// Стало
user?.address?.city;С оператором ??
Часто вместе для значения по умолчанию:
const city = user?.address?.city ?? 'Не указан';Нюансы
?. проверяет только null/undefined, а не любые falsy. Не злоупотреблять — маскирует места, где значение не должно отсутствовать.
Коротко для собеседования
?. (опциональная цепочка) безопасно обращается к вложенным свойствам/методам/элементам: при null/undefined в цепочке возвращает undefined вместо ошибки (user?.address?.city, callback?.()). Заменяет длинные проверки через &&, часто в паре с ?? для значения по умолчанию. Проверяет только null/undefined.