update objects

This commit is contained in:
2025-02-28 10:31:23 +03:00
parent b021fab251
commit 7d94ca6021
19 changed files with 346 additions and 216 deletions

View File

@@ -0,0 +1,36 @@
---
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` и позволяет продолжить вычисление, если это не так.
Цепочка ?. позволяет безопасно получать доступ к вложенным свойствам.