From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../reference/operators/function/index.html | 154 +++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100644 files/uk/web/javascript/reference/operators/function/index.html (limited to 'files/uk/web/javascript/reference/operators/function') diff --git a/files/uk/web/javascript/reference/operators/function/index.html b/files/uk/web/javascript/reference/operators/function/index.html new file mode 100644 index 0000000000..8e8760660b --- /dev/null +++ b/files/uk/web/javascript/reference/operators/function/index.html @@ -0,0 +1,154 @@ +--- +title: Функціональний вираз +slug: Web/JavaScript/Reference/Operators/function +tags: + - Function + - JavaScript + - Оператор +translation_of: Web/JavaScript/Reference/Operators/function +--- +
{{jsSidebar("Operators")}}
+ +

Ключове слово function може використовуватись для визначення функції всередині виразу.

+ +

Ви також можете визначати функції за допомогою конструктора Function та оголошення функції.

+ +
{{EmbedInteractiveExample("pages/js/expressions-functionexpression.html")}}
+ + + +

Синтаксис

+ +
var myFunction = function [name]([param1[, param2[, ..., paramN]]]) {
+   statements
+};
+ +

Починаючи з ES2015 ви також можете скористатись стрілковими функціями.

+ +

Параметри

+ +
+
name
+
Ім'я функції. Можна пропустити, в цьому випадку функція буде анонімною. Ім'я доступне лише у тілі функції.
+
paramN
+
Ім'я аргументу, який передається у функцію.
+
statements
+
Інструкції, що складають тіло функції.
+
+ +

Опис

+ +

Функціональний вираз дуже схожий на оголошення функції та має майже такий самий синтаксис (дивіться оголошення функції). Головна відмінність між функціональним виразом та оголошенням функції - це ім'я функції, яке може бути пропущене у функціональних виразах для створення анонімних функцій. Функціональний вираз можна використовувати як НВФВ (Негайно виконуваний функціональний вираз), який запускається одразу після визначення. Дивіться також главу про функції, щоб дізнатись більше.

+ +

Підняття функціонального виразу

+ +

Функціональні вирази у JavaScript не піднімаються, на відміну від {{jsxref("Statements/function", "оголошень функцій", "#Підняття_оголошення_функції")}}. Не можна використовувати функціональний вираз до його визначення:

+ +
console.log(notHoisted) // undefined
+//хоча імена змінних піднімаються, визначення не піднімається і дорівнює undefined.
+notHoisted(); // TypeError: notHoisted is not a function
+
+var notHoisted = function() {
+   console.log('bar');
+};
+
+ +

Іменований функціональний вираз

+ +

Якщо бажаєте посилатись на поточну функцію всередині тіла функції, то вам потрібно створити іменований функціональний вираз. Це ім'я є локальним і доступне тільки всередині тіла (області видимості) функції. Це також дозволяє не використовувати нестандартну властивість arguments.callee.

+ +
var math = {
+  'factit': function factorial(n) {
+    console.log(n)
+    if (n <= 1) {
+      return 1;
+    }
+    return n * factorial(n - 1);
+  }
+};
+
+math.factit(3) //3;2;1;
+
+ +

Змінна, якій присвоюється функціональний вираз, матиме властивість name (ім'я). Ім'я не змінюється, якщо вираз присвоюється іншій змінній. Якщо ім'я функції пропущене, це буде ім'я змінної (неявне ім'я). Якщо ім'я функції присутнє, це буде ім'я функції (явне ім'я). Це також стосується стрілкових функцій (стрілкові функції не мають імені, тому ви можете задати лише неявне ім'я змінної).

+ +
var foo = function() {}
+foo.name // "foo"
+
+var foo2 = foo
+foo2.name // "foo"
+
+var bar = function baz() {}
+bar.name // "baz"
+
+console.log(foo === foo2); // true
+console.log(typeof baz); // undefined
+console.log(bar === baz); // false (помилка, тому що baz == undefined)
+
+ +

Приклади

+ +

Наступний приклад визначає неіменовану функцію та присвоює її x. Функція вертає квадрат свого аргументу:

+ +
var x = function(y) {
+   return y * y;
+};
+
+ +

Найчастіше вони використовуються як функції зворотного виклику:

+ +
button.addEventListener('click', function(event) {
+    console.log('кнопка натиснута!')
+})
+ +

Специфікації

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
СпецифікаціяСтатусКоментар
{{SpecName('ESDraft', '#sec-function-definitions', 'Function definitions')}}{{Spec2('ESDraft')}}
{{SpecName('ES6', '#sec-function-definitions', 'Function definitions')}}{{Spec2('ES6')}}
{{SpecName('ES5.1', '#sec-13', 'Function definition')}}{{Spec2('ES5.1')}}
{{SpecName('ES3', '#sec-13', 'Function definition')}}{{Spec2('ES3')}}Початкове визначення. Реалізоване у JavaScript 1.5.
+ +

Сумісність з веб-переглядачами

+ + + +

{{Compat("javascript.operators.function")}}

+ +

Див. також

+ + -- cgit v1.2.3-54-g00ecf