Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Fix functions expressions#687

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
Andrii256 wants to merge1 commit intojavascript-tutorial:master
base:master
Choose a base branch
Loading
fromAndrii256:2-16-function-expressions
Open
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 12 additions & 12 deletions1-js/02-first-steps/16-function-expressions/article.md
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
# Функціональні вирази

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

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

```js
function sayHi() {
Expand DownExpand Up@@ -34,7 +34,7 @@ let sayHi = function() {

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

Повторімо:немає значення,яким чином створено функцію, функція -- це завжди значення. В обох прикладах вище, функція зберігається в змінній `sayHi`.
Повторімо:незалежно від тогояким чином створено функцію, всеодно функція -- це завжди значення. В обох прикладах вище, функція зберігається в змінній `sayHi`.

Ми навіть можемо вивести це значення, використовуючи `alert`:

Expand All@@ -52,9 +52,9 @@ alert( sayHi ); // показує код функції

У JavaScript функція — це значення, тому ми можемо поводитись з нею, як і з іншими значеннями. Код вище показує її рядкове представлення — вихідний код.

Звичайно, функція — особливе значення, у тому сенсі, що ми можемо здійснити її виклик за допомогою дужок: `sayHi()`.
Звичайно, функція — особливе значення. Особливе тим, що ми можемо здійснити її виклик за допомогою дужок: `sayHi()`.

Але цевсе-таки значення. Тому ми можемо працювати з нею, як і з іншими значеннями.
Але цевсеодно значення. Тому ми можемо працювати з нею, як і з іншими значеннями.

Скажімо, ми можемо скопіювати функцію в іншу змінну:

Expand All@@ -75,7 +75,7 @@ sayHi(); // Привіт // ось так теж спрацює (а чо
2. Рядок `(2)` копіює це значення в змінну `func`. Ще раз зауважте: після `sayHi` немає дужок. Якби вони там були, тоді `func = sayHi()` записав би *результат виклику* `sayHi()` у `func`, а не *саму функцію* `sayHi`.
3. Тепер ми можемо викликати функцію двома шляхами: `sayHi()` або `func()`.

Також ми могли використати Функціональний Вираз у першому рядку, щобвизначити `sayHi`:
Також ми могли використати Функціональний Вираз у першому рядку, щобоголосити `sayHi`:

```js
let sayHi = function() { // (1) створити
Expand DownExpand Up@@ -144,7 +144,7 @@ function showCancel() {
ask("Ви згодні?", showOk, showCancel);
```

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

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

Expand All@@ -167,7 +167,7 @@ ask(
*/!*
```

У цьому прикладі функції оголошені всередині виклику `ask(...)`. Вони не мають власного ім'я, тому називаються *анонімними*.До таких функційне можнадоступитись поза `ask` (бо вони не присвоєні змінним), але це саме те, що нам потрібно.
У цьому прикладі функції оголошені всередині виклику `ask(...)`. Вони не мають власного ім'я, тому називаються *анонімними*.Ці функціїне можнавикликати за межами `ask` (бо вони не присвоєні змінним), але це саме те, що нам потрібно.

Подібний код, що з'явився в нашому скрипті є природним, в дусі JavaScript.

Expand All@@ -194,7 +194,7 @@ ask(
return a + b;
}
```
- *Функціональний Вираз:* функція створюється як частина іншого виразу чи синтаксичної конструкції. Нижче, створення функції відбувається в правій частині "виразу присвоєння" `=`:
- *Функціональний Вираз:* функція створюється як частина іншого виразу чи синтаксичної конструкції. Нижче, створення функції відбувається в правій частині "виразу присвоєння", тобто після `=`:

```js
// Функціональний Вираз
Expand DownExpand Up@@ -249,9 +249,9 @@ let sayHi = function(name) { // (*) більше ніякої магії

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

**У суворому режимі, якщо Оголошення Функції знаходиться в блоці `{...}`, то функція доступна усюди всередині блоку. Але не зовні.**
**У[суворому режимі](info:strict-mode), якщо Оголошення Функції знаходиться в блоці `{...}`, то функція доступна усюди всередині блоку. Але не зовні.**

Уявімо, що нам потрібно визначити функцію `welcome()`залежно від змінної `age`, яку ми отримаємо під час виконання коду. Далі в скрипті нам буде потрібно викликати цю функцію.
Уявімо, що нам потрібно визначити функцію `welcome()`опираючись на значення змінної `age`, яку ми отримаємо під час виконання коду. Далі в скрипті нам буде потрібно викликати цю функцію.

Якщо ми використаємо Оголошення Функції, то це не буде працювати:

Expand DownExpand Up@@ -360,7 +360,7 @@ welcome(); // спрацює


```smart header="Коли використовувати Оголошення Функції, а коли -- Функціональний Вираз?"
Зазвичай, коли нам потрібна функція, то найперше потрібно розглянути синтаксис Оголошення Функції. Він дає нам більше свободи у тому, як організовувати код, оскільки дозволяє викликати функції ще до їх визначення.
Зазвичай краще надавати перевагу синтаксису Оголошення Функції. Він дає нам більше свободи у тому, як організовувати код, оскільки дозволяє викликати функції ще до їх визначення.

Також функції `function f(…) {…}` простіше помітити в коді, ніж `let f = function(…) {…};`. Оголошення Функції легше "ловляться очима".

Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp