Files
frontend-docs/docs/javascript/objects/05-option-chaining.md
2025-02-28 10:31:23 +03:00

2.2 KiB
Raw Blame History

sidebar_position
sidebar_position
5

Опциональная цепочка '?.'

Опциональная цепочка ?. останавливает вычисление и возвращает undefined, если значение перед ?. равно undefined или null.

let user = {}; // пользователь без адреса

alert( user?.address?.street ); // undefined (без ошибки)

Другие варианты применения: ?.(), ?.[]

Опциональная цепочка ?. — это не оператор, а специальная синтаксическая конструкция, которая также работает с функциями и квадратными скобками.

Например, ?.() используется для вызова функции, которая может не существовать.

Мы можем использовать ?. для безопасного чтения и удаления, но не для записи

Опциональная цепочка ?. не имеет смысла в левой части присваивания.

let user = null;

user?.name = "John"; // Ошибка, не работает
// то же самое что написать undefined = "John"

Итого

Синтаксис опциональной цепочки ?. имеет три формы:

  1. obj?.prop возвращает obj.prop если obj существует, в противном случае undefined.
  2. obj?.[prop] возвращает obj[prop] если obj существует, в противном случае undefined.
  3. obj.method?.() вызывает obj.method(), если obj.method существует, в противном случае возвращает undefined.

Как мы видим, все они просты и понятны в использовании. ?. проверяет левую часть на null/undefined и позволяет продолжить вычисление, если это не так.

Цепочка ?. позволяет безопасно получать доступ к вложенным свойствам.