1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
---
title: Функція
slug: Glossary/Функція
tags:
- IIFE
- JavaScript
- Словник
- Функція
translation_of: Glossary/Function
---
<p><span class="seoSummary"><strong>Функція</strong> - це фрагмент коду, що може бути викликаний іншим кодом чи сам собою, або {{Glossary("змінна")}} що відноситься до функцій. Коли функцію викликано, {{Glossary("арґументи")}} функція отримує як ввід, та може повертати вивід. Функції у {{glossary("JavaScript")}} це також {{glossary("Object","об'єкти")}}.</span></p>
<p>Ім'я функції це {{Glossary("identifier","ідентифікатор")}} оголошений як частина оголошення функції чи виразу функції. {{Glossary("scope", "Область видимості")}} залежить від того, є функція оголошеною чи описаною.</p>
<h3 id="Різні_види_функцій">Різні види функцій</h3>
<p><strong>Анонімна функція</strong>, це функція без імені функції:</p>
<pre class="brush: js">function () {};
// або використовуючи ECMAScript 2015 запис зі стрілкою
() => {};
</pre>
<p><strong>Названа функція</strong>, це функція що має ім'я:</p>
<pre class="brush: js">function foo() {};
// або використовуючи ECMAScript 2015 запис зі стрілкою
const foo = () => {};
</pre>
<p><strong>Внутрішня функція</strong>, це функція всередині іншої функції (<code>square</code> в цьому випадку). <strong>Зовнішня функція</strong>, це функція, що містить всередині інші функції (<code>addSquares</code> в цьому випадку):</p>
<pre class="brush: js">function addSquares(a,b) {
function square(x) {
return x * x;
}
return square(a) + square(b);
};
// використовуючи ECMAScript 2015 запис зі стрілкою
const addSquares = (a,b) => {
const square = x => x*x;
return square(a) + square(b);
};
</pre>
<p><strong>Рекурсивна функція</strong>, це функція, що викликає сама себе. Дивіться {{Glossary("Рекурсія", "рекурсія")}}.</p>
<pre class="brush: js">function loop(x) {
if (x >= 10)
return;
loop(x + 1);
};
// використовуючи ECMAScript 2015 запис зі стрілкою
const loop = x => {
if (x >= 10)
return;
loop(x + 1);
};
</pre>
<p><strong>Негайно виконуваний функціональний вираз </strong>(IIFE, Immediately Invoked Function Expression) — це вираз, що одночасно оголошує {{Glossary("Функція", "функцію")}} в {{Glossary("JavaScript")}} та здійснює її виклик. Позаяк подальший виклик безіменної функції, посилання на яку відсутнє, неможливий, головним призначенням такого виразу є створення окремої області видимості, щоб уникнути засмічення зовнішньої (зазвичай, глобальної). Створити НВФВ можна, додавши ліву та праву дужки в кінці оголошення функції.</p>
<pre class="brush: js">// Error (https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)
/*
function foo() {
console.log('Hello Foo');
}();
*/
(function foo() {
console.log("Hello Foo");
}());
(function food() {
console.log("Hello Food");
})();
</pre>
<p>Якщо хочете дізнатись бульше про НВФВ, перегляньте сторінку на Wikipedia : <a href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression">Immediately Invoked Function Expression</a></p>
<h2 id="Дізнатись_більше">Дізнатись більше</h2>
<h3 id="Технічна_довідка">Технічна довідка</h3>
<ul>
<li><a href="/uk/docs/Web/JavaScript/Guide/Functions" title="en-US/docs/Web/JavaScript/Guide/Functions">Функції</a></li>
<li><a href="/uk/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Стрілочні функції</a></li>
</ul>
|