Skip to content

Commit a7a0376

Browse files
committed
feat(1-02-16-function-expressions): Fix language mistakes in 16-function-expressions
1 parent 584f32e commit a7a0376

File tree

1 file changed

+14
-14
lines changed
  • 1-js/02-first-steps/16-function-expressions

1 file changed

+14
-14
lines changed

1-js/02-first-steps/16-function-expressions/article.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Функціональні вирази
22

3-
Для JavaScript функція — це не "магічна мовна структура", a значення особливого ґатунку.
3+
Для JavaScript функція — це не "магічна мовна структура", а значення особливого ґатунку.
44

55
Синтаксис, що ми раніше використовували, називається [*Оголошення Функції*](https://developer.mozilla.org/uk/docs/Web/JavaScript/Guide/Functions#Оголошення_функції) (Function Declaration):
66

@@ -22,15 +22,15 @@ let sayHi = function() {
2222
};
2323
```
2424

25-
Ми бачимо змінну `sayHi`. В якості значення, їй присвоюється нова функція `function() { alert("Привіт"); }`.
25+
Ми бачимо змінну `sayHi`. Як значення їй присвоюється нова функція `function() { alert("Привіт"); }`.
2626

2727
Оскільки створення функції відбувається в контексті присвоєння виразу (праворуч від `=`), це називається *Функціональним виразом* (Function Expression).
2828

2929
Зауважте, після ключового слова `function` немає назви функції. Для функціональних виразів це допустимо.
3030

3131
В цьому прикладі, ми одразу присвоюємо функцію цій змінній, тож, інакше кажучи, код в прикладі "створює функцію і кладе її в змінну `sayHi`".
3232

33-
В складніших ситуаціях, з якими ми стикнемося пізніше, функцію можна створити і відразу ж викликати або запланувати її на відтерміноване виконання. Такі функції ніде не зберігаються, тому вони залишаються анонімними.
33+
В складніших ситуаціях, з якими ми стикнемося пізніше, функцію можна створити та відразу ж викликати або запланувати її на відтерміноване виконання. Такі функції ніде не зберігаються, тому вони залишаються анонімними.
3434

3535
## Функція -- це значення
3636

@@ -72,7 +72,7 @@ sayHi(); // Привіт // ось так теж спрацює (а чо
7272
Розглянемо детально, що тут відбулось:
7373

7474
1. Оголошення Функції `(1)` створює саму функцію і кладе її значення у змінну `sayHi`.
75-
2. Рядок `(2)` копіює це значення в змінну `func`. Ще раз зауважте: після `sayHi` немає дужок. Якби вони там були, тоді `func = sayHi()` записав би *результат виклику* `sayHi()` у `func`,а не *саму функцію* `sayHi`.
75+
2. Рядок `(2)` копіює це значення в змінну `func`. Ще раз зауважте: після `sayHi` немає дужок. Якби вони там були, тоді `func = sayHi()` записав би *результат виклику* `sayHi()` у `func`, а не *саму функцію* `sayHi`.
7676
3. Тепер ми можемо викликати функцію двома шляхами: `sayHi()` або `func()`.
7777

7878
Також ми могли використати Функціональний Вираз у першому рядку, щоб визначити `sayHi`:
@@ -104,7 +104,7 @@ let sayHi = function() {
104104
105105
Відповідь проста: тут Функціональний Вираз (у вигляді `function(…) {…}`) створений всередині інструкції присвоєння: `let sayHi = …;`. Крапка з комою `;` не є частиною синтаксису функції. Вона є частиною інструкції, тому її рекомендується ставити в кінці інструкції.
106106
107-
Крапку з комою доцільно було б поставити і для простішої інструкції, наприклад для `let sayHi = 5;`.
107+
Крапку з комою доцільно було б поставити й для простішої інструкції, наприклад для `let sayHi = 5;`.
108108
````
109109

110110
## Колбеки (функції зворотного виклику)
@@ -144,13 +144,13 @@ function showCancel() {
144144
ask("Ви згодні?", showOk, showCancel);
145145
```
146146

147-
Такі функції є досить практичними. Головна відмінність між функцією `ask` у реальних програмах та прикладі вище, полягає в тому, що перша може використовувати більш складні способи взаємодії з користувачем, ніж звичайний `confirm`. У браузерах така функція зазвичай показує гарненьке модальне вікно з запитанням. Але це вже інша історія.
147+
Такі функції є досить практичними. Головна відмінність між функцією `ask` у реальних програмах та прикладі вище, полягає в тому, що перша може використовувати складніші способи взаємодії з користувачем, ніж звичайний `confirm`. У браузерах така функція зазвичай показує гарненьке модальне вікно з запитанням. Але це вже інша історія.
148148

149149
**Аргументи `showOk` та `showCancel` функції `ask` називаються *функціями зворотного виклику* або просто *колбеками*.**
150150

151-
Суть полягає в тому, що ми передаємо функцію і очікуємо, що вона буде викликана (англ. "called back") пізніше, якщо це буде потрібно. У нашому випадку, `showOk` стає колбеком, якщо відповідь — "yes", а `showCancel`, якщо відповідь — "no".
151+
Суть полягає в тому, що ми передаємо функцію та очікуємо, що вона буде викликана (англ. "called back") пізніше, якщо це буде потрібно. У нашому випадку, `showOk` стає колбеком, якщо відповідь — "yes", а `showCancel`, якщо відповідь — "no".
152152

153-
Ми можемо використати Функціональний Вираз, щоб записати туж саму функцію коротше:
153+
Ми можемо використати Функціональний Вираз, щоб записати ту ж саму функцію коротше:
154154

155155
```js run no-beautify
156156
function ask(question, yes, no) {
@@ -203,19 +203,19 @@ ask(
203203
};
204204
```
205205

206-
Більш тонка відмінність в тому, *коли* функція буде створена рушієм Javascript.
206+
Тонкіша відмінність в тому, *коли* функція буде створена рушієм Javascript.
207207

208208
**Функціональний Вираз буде створено тільки тоді, коли до нього дійде виконання і тільки після цього він може бути використаний.**
209209

210-
Щойно потік виконання досягне правої частини у присвоєнні `let sum = function…`, функцію буде створено і з цього моменту її можна буде використати (присвоїти змінній, викликати тощо ).
210+
Щойно потік виконання досягне правої частини у присвоєнні `let sum = function…`, функцію буде створено і з цього моменту її можна буде використати (присвоїти змінній, викликати тощо).
211211

212212
У випадку з Оголошенням Функції все інакше.
213213

214214
**Синтаксис Оголошення Функції дозволяє викликати функцію раніше, ніж вона були визначена в коді**
215215

216216
Наприклад, глобальне Оголошення Функції буде доступним з будь-якого місця в скрипті.
217217

218-
Така поведінка спричинена особливостями внутрішніх алгоритмів. Коли JavaScript готується до виконання скрипта, він спочатку шукає всі глобальні Оголошення Функцій і на їх основі створює функції. Цей процес можна вважати "фазою ініціалізації".
218+
Така поведінка спричинена особливостями внутрішніх алгоритмів. Коли JavaScript готується до виконання скрипту, він спочатку шукає всі глобальні Оголошення Функцій і на їх основі створює функції. Цей процес можна вважати "фазою ініціалізації".
219219

220220
Після того, як всі Оголошення Функцій були оброблені, рушій починає виконання коду.
221221

@@ -231,7 +231,7 @@ function sayHi(name) {
231231
}
232232
```
233233

234-
Функцію `sayHi` було створено, коли JavaScript готувався до виконання скрипта і вона буде доступною з будь-якого місця.
234+
Функцію `sayHi` було створено, коли JavaScript готувався до виконання скрипту і вона буде доступною з будь-якого місця.
235235

236236
...З Функціональним Виразом це не спрацювало б:
237237

@@ -245,7 +245,7 @@ let sayHi = function(name) { // (*) більше ніякої магії
245245
};
246246
```
247247

248-
Створення функцій, визначених Функціональними Виразами, відбувається тоді, коли до них доходить потік виконання. Це станеться тільки при досягненні рядку з зірочкою `(*)`. Занадто пізно.
248+
Створення функцій, визначених Функціональними Виразами, відбувається тоді, коли до них доходить потік виконання. Це станеться тільки при досягненні рядка з зірочкою `(*)`. Занадто пізно.
249249

250250
Ще однією особливістю Оголошення Функції є її блокова область видимості.
251251

@@ -377,4 +377,4 @@ welcome(); // спрацює
377377

378378
Зазвичай, коли нам потрібно визначити функцію, то краще віддати перевагу синтаксису Оголошення Функції, бо така функція є видимою навіть перед її визначенням в коді. Це дає нам більшу гнучкість в організації коду та й сам синтаксис є більш читабельним.
379379

380-
Таким чином, використовувати Функціональний Вираз потрібно тільки тоді, коли Оголошенням Функції не підходить для вирішення нашої задачі. Ми розглянули декілька таких прикладів у цьому розділі і побачимо ще в майбутньому.
380+
Таким чином, використовувати Функціональний Вираз потрібно тільки тоді, коли Оголошенням Функції не підходить для розв'язання нашої задачі. Ми розглянули декілька таких прикладів у цьому розділі й побачимо ще в майбутньому.

0 commit comments

Comments
 (0)