PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Зачем нужен оператор ?.

Основы языка

Оператор `?.` (опциональная цепочка) нужен для безопасного доступа к вложенным свойствам объекта: если промежуточное значение `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.

Другие вопросы раздела