Skip to content

Commit 5daf338

Browse files
authored
just placed "ё" letters
1 parent 924c549 commit 5daf338

File tree

1 file changed

+8
-8
lines changed
  • 1-js/04-object-basics/07-optional-chaining

1 file changed

+8
-8
lines changed

1-js/04-object-basics/07-optional-chaining/article.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
## Проблема "несуществующего свойства"
99

10-
Если вы только начали читать учебник и изучать JavaScript, то, возможно, проблема вас еще не коснулась, но она довольно распространена.
10+
Если вы только начали читать учебник и изучать JavaScript, то, возможно, проблема вас ещё не коснулась, но она довольно распространена.
1111

1212
В качестве примера предположим, что у нас есть объекты "user", которые содержат информацию о наших пользователях.
1313

@@ -25,14 +25,14 @@ alert(user.address.street); // Ошибка!
2525

2626
Во многих практических случаях мы бы предпочли получить здесь `undefined` вместо ошибки (что означало бы "улицы нет").
2727

28-
...и еще один пример. В веб-разработке мы можем получить объект, соответствующий элементу веб-страницы, с помощью специального вызова метода, такого как `document.querySelector('.elem')`, и он возвращает `null`, когда такого элемента нет.
28+
...и ещё один пример. В веб-разработке мы можем получить объект, соответствующий элементу веб-страницы, с помощью специального вызова метода, такого как `document.querySelector('.elem')`, и он возвращает `null`, когда такого элемента нет.
2929

3030
```js run
3131
// document.querySelector('.elem') равен нулю, если элемента нет
3232
let html = document.querySelector('.elem').innerHTML; // ошибка, если он равен нулю
3333
```
3434

35-
Еще раз, если элемент не существует, мы получим сообщение об ошибке доступа к `.innerHTML` со значением `null`. И в некоторых случаях, когда отсутствие элемента является нормальным, мы хотели бы избежать ошибки и просто принять `html = null` в качестве результата.
35+
Ещё раз, если элемент не существует, мы получим сообщение об ошибке доступа к `.innerHTML` со значением `null`. И в некоторых случаях, когда отсутствие элемента является нормальным, мы хотели бы избежать ошибки и просто принять `html = null` в качестве результата.
3636

3737
Как мы можем это сделать?
3838

@@ -68,7 +68,7 @@ alert( user.address && user.address.street && user.address.street.name ); // und
6868

6969
Проход при помощи логического оператора И '`&&` через весь путь к свойству гарантирует, что все компоненты существуют (если нет, вычисление прекращается), но также не является идеальным.
7070

71-
Как вы можете видеть, имена свойств по-прежнему дублируются в коде. Например, в приведенном выше коде `user.address` появляется три раза.
71+
Как вы можете видеть, имена свойств по-прежнему дублируются в коде. Например, в приведённом выше коде `user.address` появляется три раза.
7272

7373
Вот почему в язык была добавлена опциональная цепочка `?.`. Чтобы решить эту проблему раз и навсегда!
7474

@@ -110,11 +110,11 @@ alert( user?.address.street ); // undefined
110110

111111
К примеру, если в соответствии с нашей логикой кодирования объект `user` должен существовать, но `address` является необязательным, то нам следует написать `user.address?.street`, но не `user?.address?.street`.
112112

113-
Таким образом, если `user` окажется неопределенным из-за погрешности, мы увидим программную ошибку по этому поводу и исправим ее. В противном случае ошибки кодирования могут замалчиваться там, где это неуместно, и их будет сложнее отлаживать.
113+
Таким образом, если `user` окажется неопределённым из-за погрешности, мы увидим программную ошибку по этому поводу и исправим её. В противном случае ошибки кодирования могут замалчиваться там, где это неуместно, и их будет сложнее отлаживать.
114114
```
115115
116116
````warn header="Переменная перед `?.` должна быть объявлена"
117-
Если переменной `user` вообще нет, то `user?.anything` приведет к ошибке:
117+
Если переменной `user` вообще нет, то `user?.anything` приведёт к ошибке:
118118
119119
```js run
120120
// ReferenceError: user is not defined
@@ -146,7 +146,7 @@ alert(x); // 0, значение не увеличилось
146146

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

149-
В приведенном ниже коде у некоторых наших пользователей есть метод `admin`, а у некоторых его нет:
149+
В приведённом ниже коде у некоторых наших пользователей есть метод `admin`, а у некоторых его нет:
150150

151151
```js run
152152
let userAdmin = {
@@ -213,7 +213,7 @@ user?.name = "John"; // Error, не работает
213213
2. `obj?.[prop]` -- возвращает `obj[prop]` если `obj` существует, в противном случае `undefined`.
214214
3. `obj.метод?.()` -- вызывает `obj.method()`, если `obj.method` существует, в противном случае возвращает `undefined`.
215215

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

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

0 commit comments

Comments
 (0)