Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник JavaScript

Optional chaining (?.)

Безопасное обращение к свойству: вернёт undefined вместо ошибки, если объекта нет.

Доступно с: ES2020

Синтаксис

obj?.prop / obj?.[key] / fn?.()

Примеры

Вложенное свойство, которого может не быть:

const user = { name: 'Anna' };
 
console.log(user.address?.city);

Результат:

undefined

Без ?. та же запись вызывает ошибку:

const user = { name: 'Anna' };
 
try {
  console.log(user.address.city);
} catch (error) {
  console.log(error.name);
}

Результат:

TypeError

Вместе с ?? и для вызова метода:

const user = { name: 'Anna' };
 
console.log(user.address?.city ?? 'no city');
console.log(user.greet?.());

Результат:

no city
undefined

Примечания

Проверка срабатывает только для null и undefined. Не ставьте ?. везде подряд: если объект обязан существовать, ошибка честнее, чем молчаливый undefined.

См. также

  • Nullish coalescing (??) — Возвращает значение справа, если слева null или undefined.
  • TypeError — Ошибка «значение не того типа» — например, вызов метода у undefined.
  • in — Проверяет, есть ли у объекта свойство (в том числе унаследованное).

Вопросы и ответы по теме

В учебнике

  • Опциональная цепочка и ?? — Безопасный доступ к вложенным свойствам в JavaScript: оператор ?., вызов необязательных методов и значения по умолчанию через ??.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.