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 basics#686

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-15-functin-basics
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
46 changes: 23 additions & 23 deletions1-js/02-first-steps/15-function-basics/article.md
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,7 @@ function showMessage() {
}
```

Спочатку ми пишемо `function` — це ключове слово (keyword), яке дає зрозуміти комп’ютеру, що далі буде оголошення функції. Потім — *назву функції* та списокїї*параметрів*в дужках (розділенікомою). Якщопараметрів немає, ми залишаємо *пусті дужки*. І нарешті, код функції, який також називають *тілом функції* між фігурними дужками.
Спочатку ми пишемо `function` — це ключове слово (англ.keyword), яке дає зрозуміти комп’ютеру, що далі буде оголошення функції. Потім — *назву функції* тав дужкахсписокз назвами*параметрів*які наша функція має приймати (розділяючи їхкомою). Якщоми не хочемо щоб наша функція приймала параметри, ми залишаємо *пусті дужки*. І нарешті, код функції, який також називають *тілом функції* між фігурними дужками.

```js
function name(parameter1, parameter2, ... parameterN) {
Expand DownExpand Up@@ -71,7 +71,7 @@ alert( message ); // <-- Помилка! Змінна недоступна по

## Зовнішні змінні

Функція може використовувати зовнішні змінні, наприклад:
Функція може використовуватизмінні, які оголошені за її межами (зовнішні змінні), наприклад:

```js run no-beautify
let *!*userName*/!* = 'Іван';
Expand DownExpand Up@@ -184,7 +184,7 @@ alert( from ); // Анна
Дехто може сказати, що в прикладі вище "функцію `showMessage` оголошено з двома параметрами, потім викликано з двома аргументами: `from` і `"Привіт"`".


##Типові значення
##Значення за замовчуванням

Якщо викликати функцію без аргументів, тоді відповідні значення стануть `undefined`.

Expand All@@ -196,7 +196,7 @@ showMessage('Анна');

Помилки не виникне. Такий виклик виведе `"*Анна*: undefined"`. Оскільки значення для змінної `text` не задане, воно стане `undefined`.

Ми можемо задатитак зване "типове"значенняпараметра, яке використовуватиметься, якщо не задати аргумент. Для цього потрібно написати значення через `=`:
Ми можемо задатидля параметразначенняза замовчуванням, яке використовуватиметься, якщо не задати аргумент. Для цього потрібно написати значення через `=`:

```js run
function showMessage(from, *!*text = "текст не задано"*/!*) {
Expand All@@ -208,7 +208,7 @@ showMessage("Анна"); // Анна: текст не задано

Тепер, якщо параметр `text` не задано, його значення стане `"текст не задано"`.

Типове значеннятакождодається, якщо параметр існує, але суворо дорівнює `undefined`, наприклад:
Значення за замовчуваннямтакожзастосовується, якщо параметр існує, але суворо дорівнює `undefined`, наприклад:

```js
showMessage("Анна", undefined); // Анна: текст не задано
Expand All@@ -224,15 +224,15 @@ function showMessage(from, text = anotherFunction()) {
```

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

В прикладі вище, функція `anotherFunction()` не викличеться, якщо буде задано параметр `text`.

З іншого боку, вона буде викликатися кожного разу, коли `text` відсутній.
```

````smart header="Типові параметри у старому JavaScript коді"
Кілька років тому JavaScript не підтримував синтаксистиповихзначень для параметрів. Тому люди використовували інші способи їх визначення.
Кілька років тому JavaScript не підтримував синтаксис значень за замовчуванням для параметрів. Тому люди використовували інші способи їх визначення.

Нині ми можемо зустріти їх у старих скриптах.

Expand All@@ -254,18 +254,18 @@ function showMessage(from, text) {

```js
function showMessage(from, text) {
// Якщо значення у змінній textдаєfalse, призначаєтьсятиповезначення
//це передбачає, що text == "" це те саме, що і його повна відсутність
// Якщо значення у змінній textпри перетворенні на булевий тип будеfalse,їйпризначається значення за замовчуванням
//в цій ситуації скрипт сприймає `""` як те саме, що і його повна відсутність.
text = text || 'текст повідомлення відсутній';
...
}
```
````


### Альтернативнітиповіпараметри
### Альтернативні параметри за замовчуванням

Інколи виникає необхідність присвоїтитиповізначення для змінних під час виконання функції, а не під час її оголошення.
Інколи виникає необхідність присвоїти значення за замовчуванням для змінних під час виконання функції, а не під час її оголошення.

Під час виконання функції, ми можемо перевірити, чи параметр надано, порівнюючи його з `undefined`:

Expand DownExpand Up@@ -295,7 +295,7 @@ function showMessage(text) {
}
```

Сучасні рушії JavaScript підтримують [оператор null-злиття](info:nullish-coalescing-operator) `??`. Його краще використовувати, коли "майже false" значення, типу `0`, мають вважатися за "нормальні":
Сучасні рушії JavaScript підтримують [оператороб’єднання зnull](info:nullish-coalescing-operator) `??`. Його краще використовувати, коли "майже false" значення, типу `0` або `""`, мають вважатися за "нормальні":

```js run
function showCount(count) {
Expand All@@ -310,7 +310,7 @@ showCount(); // невідомо

## Повернення значення

Як результат функціяможе повертати назад значення в код, який викликав цю функцію.
Функціяможе повертати значення в код, який викликав цю функцію.

Найпростіший приклад — функція, яка сумує два значення:

Expand All@@ -323,7 +323,7 @@ let result = sum(1, 2);
alert( result ); // 3
```

Директива `return` може бути в будь-якому місці функції. Коли виконання досягає цієї директиви, функція зупиняється, і в код, який викликав цю функцію, повертається значення (в прикладі вище, це значеннянадається змінній `result`).
Директива `return` може бути в будь-якому місці функції. Коли виконання досягає цієї директиви, функція зупиняється, і в код, який викликав цю функцію, повертається значення (в прикладі вище, це значенняприсвоюється в змінну `result`).

В одній функції може бути декілька директив `return`. Наприклад:

Expand DownExpand Up@@ -368,13 +368,13 @@ function showMovie(age) {

В коді вище, якщо `checkAge(age)` поверне `false`, тоді функція `showMovie` не дійде до виконання `alert`.

````smart header="Функція з порожнім `return`, або без `return` повертає `undefined`"
Якщо функціянеповертає значення, тоді "повернене"значення буде `undefined`:
````smart header="Функція з порожнім `return`, або безвказаного в ній`return` повертає `undefined`"
Функція буде повертати значення навіть якщо виневкажете їй явно що вона повинна повертати. Простозначення це буде `undefined`:

```js run
function doNothing() { /* порожньо */ }

alert( doNothing()=== undefined); //true
alert( doNothing() ); //undefined
```

Порожній `return` це те саме, що `return undefined`:
Expand DownExpand Up@@ -402,7 +402,7 @@ return*!*;*/!*
('деякий' + 'довгий' + 'вираз' + 'або' + 'що' * f(a) + f(b))
```

Тобто,повернеться порожній результат.
Тобто,результат буде як ніби ми взагалі не вказали ніякого виразу після `return`.

Якщо ми хочемо повернути довгий вираз, який займе декілька рядків, ми повинні писати його на одному рядку з `return`. Або обгорнути його в дужки. Ось так:

Expand All@@ -413,7 +413,7 @@ return (
'що' * f(a) + f(b)
)
```
Такий варіант працюватиме так, як ми задумали.
От такий варіант працюватиме так, як ми задумали.
````

## Найменування функції [#function-naming]
Expand All@@ -438,7 +438,7 @@ showMessage(..) // показує повідомлення
getAge(..) // повертає вік (якось його отримує або обчислює)
calcSum(..) // обчислює суму і повертає результат
createForm(..) // створює форму (і зазвичай її повертає)
checkPermission(..) // перевіряєдоступ, повертає true/false
checkPermission(..) // перевіряєдозвіл, повертає true/false
```

Якщо є префікси, погляд на ім’я функції дає зрозуміти, яку роботу вона виконує і яке значення повертає.
Expand DownExpand Up@@ -508,7 +508,7 @@ function isPrime(n) {
}
```

Другий варіант легше зрозуміти, чи не так? Замість частини коду ми бачимо назву дії (`isPrime`). Іноді розробники називають такий код *само документованим*.
Другий варіант легше зрозуміти, чи не так? Замість частини коду ми бачимо назву дії (`isPrime`). Іноді розробники називають такий код *самодокументованим*.

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

Expand All@@ -524,7 +524,7 @@ function ім’я(параметри, розділені, комою) {

- Значення, які передаються в функцію як параметри, копіюються в локальні змінні.
- Функції мають доступ до зовнішніх змінних. Але це працює тільки зсередини назовні. Код поза функцією не має доступу до локальних змінних функції.
- Функціяможе повертати значення. Якщоцьогоневідбувається, результат буде `undefined`.
- Функціязавжди повертає значення. Якщо невказати яке саме, то повертатиме `undefined`.

Для того, щоб зробити код чистим і зрозумілим, рекомендується використовувати локальні змінні та параметри функції, не користуватися зовнішніми змінними.

Expand All@@ -533,7 +533,7 @@ function ім’я(параметри, розділені, комою) {
Найменування функцій:

- Ім’я функції повинне бути коротким і чітко відображати, що робить функція. Побачивши виклик функції в коді, ви повинні зразу зрозуміти, що функція робить, і що повертає.
- Функція -- це дія, тому її ім’я зазвичайскладається з дієслова.
- Функція -- це дія, тому її ім’я зазвичайпочинається з дієслова.
- Є багато загальноприйнятих префіксів, такі як `create…`, `show…`, `get…`, `check…` тощо. Використовуйте їх, щоб пояснити, що робить функція.

Функції -- це основні будівельні блоки скриптів. Ми розглянули лише основи функцій в JavaScript, проте вже зараз цього достатньо, щоб почати їх створювати та використовувати. Це лише початок шляху. Ми будемо неодноразово повертатися до функцій і аналізуватимемо їх все глибше і глибше.

[8]ページ先頭

©2009-2025 Movatter.jp