Files
frontend-docs/docs/javascript/02-objects/05-option-chaining.md
2025-03-25 16:40:25 +03:00

38 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
sidebar_position: 5
---
# Опциональная цепочка '?.'
Опциональная цепочка ?. останавливает вычисление и возвращает `undefined`, если значение перед ?. равно `undefined` или `null`.
```js
let user = {}; // пользователь без адреса
alert( user?.address?.street ); // undefined (без ошибки)
```
### Другие варианты применения: ?.(), ?.[]
Опциональная цепочка ?. — это не оператор, а специальная синтаксическая конструкция, которая также работает с функциями и квадратными скобками.
Например, ?.() используется для вызова функции, которая может не существовать.
***Мы можем использовать ?. для безопасного чтения и удаления, но не для записи***
Опциональная цепочка ?. не имеет смысла в левой части присваивания.
```js
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` и позволяет продолжить вычисление, если это не так.
Цепочка ?. позволяет безопасно получать доступ к вложенным свойствам.
🚀 **Источник: [https://learn.javascript.ru/optional-chaining](https://learn.javascript.ru/optional-chaining)**