Skip to content

Commit 59cccf4

Browse files
committed
feat(1-04-object-basics): Fix language mistakes in 07-optional-chaining
1 parent 65b5b8d commit 59cccf4

File tree

1 file changed

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

1 file changed

+7
-7
lines changed

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ let user = {}; // користувач без властивості "address"
6464
alert(user.address ? user.address.street ? user.address.street.name : null : null);
6565
```
6666

67-
Виглядає просто жахливо і нечитабельно.
67+
Виглядає просто жахливо та нечитабельно.
6868

6969
Але не хвилюйтесь, існує кращий варіант реалізації такої задачі за допомогою логічного оператора `&&`:
7070

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

7979
Як ви бачите, імена властивостей досі дублюються в коді. В прикладі вище властивість `user.address` появляється тричі.
8080

81-
Ось чому опціональний ланцюжок `?.` був доданий в мову. Щоб вирішити цю проблему раз і назавжди!
81+
Ось чому опціональний ланцюжок `?.` був доданий в мову. Щоб розв'язати цю проблему раз і назавжди!
8282

8383
## Опціональний ланцюжок
8484

@@ -134,7 +134,7 @@ alert( user?.address.street ); // undefined
134134
// ReferenceError: user is not defined
135135
user?.address;
136136
```
137-
Змінна обов’язково повинна бути оголошена (наприклад `let/const/var user` або як параметр функції). Опціональний ланцюжок працює тільки з існуючими змінними.
137+
Змінна обов’язково повинна бути оголошена (наприклад `let/const/var user` або як параметр функції). Опціональний ланцюжок працює тільки з чинними змінними.
138138
````
139139

140140
## Скорочене обчислення
@@ -156,9 +156,9 @@ alert(x); // 0, значення не було збільшено
156156

157157
## Інші способи застосування: ?.(), ?.[]
158158

159-
Опціональний ланцюжок `?.` -- це не оператор, а спеціальна синтаксична конструкція, що також працює з функціями і квадратними дужками.
159+
Опціональний ланцюжок `?.` -- це не оператор, а спеціальна синтаксична конструкція, що також працює з функціями та квадратними дужками.
160160

161-
Наприклад, `?.()` використовується для виклику потенційно неіснуючої функції.
161+
Наприклад, `?.()` використовується для виклику потенційно відсутньої функції.
162162

163163
В прикладі нижче не в усіх користувачів є метод `admin`:
164164

@@ -184,7 +184,7 @@ userGuest.admin?.(); // нічого (немає такого методу)
184184

185185
Вже потім `?.()` перевіряє ліву частину: якщо функція `admin` існує, то вона виконається (у випадку з `userAdmin`). Інакше (для `userGuest`) обчислення припиниться без помилок.
186186

187-
Також існує синтаксис `?.[]`, якщо ми хочемо отримати доступ до властивості за допомогою квадратних дужок `[]`, а не через крапку `.`. Як і в решті випадків, такий спосіб дає змогу безпечно читати властивості об’єкту яких може не існувати.
187+
Також існує синтаксис `?.[]`, якщо ми хочемо отримати доступ до властивості за допомогою квадратних дужок `[]`, а не через крапку `.`. Як і в решті випадків, такий спосіб дає змогу безпечно читати властивості об’єкта яких може не існувати.
188188

189189
```js run
190190
let key = "firstName";
@@ -231,4 +231,4 @@ user?.name = "Іван"; // Помилка, не спрацює
231231

232232
Ланцюжок `?.` дозволяє без виникнення помилок звертатись до вкладених властивостей.
233233

234-
Тим не менш, потрібно розумно застосовувати `?.`, тільки в тих випадках де допустимо що ліва частина не існує. Щоб таким чином не приховувати потенційні помилки програмування.
234+
Однак, потрібно розумно застосовувати `?.`, тільки в тих випадках де допустимо що ліва частина не існує. Щоб таким чином не приховувати потенційні помилки програмування.

0 commit comments

Comments
 (0)