--- title: Оголошення функції slug: Web/JavaScript/Reference/Statements/function tags: - JavaScript - Функція translation_of: Web/JavaScript/Reference/Statements/function ---
Оголошення функції (функціональний оператор) визначає функцію з вказаними параметрами.
Ви також можете визначати функції за допомогою конструктора {{jsxref("Function")}} та {{jsxref("Operators/function", "функціонального виразу")}}.
function name([param[, param,[..., param]]]) { [statements] }
name
param
statements
Функція, утворена через оголошення функції, є об'єктом Function
, і має усі властивості, методи та поведінку об'єктів Function
. Більш детальну інформацію щодо функцій дивіться у статті {{jsxref("Function")}}.
Функція також може бути створена через за допомогою виразу (дивіться {{jsxref("Operators/function", "функціональний вираз")}}).
За замовчуванням функції повертають undefined
. Щоб повернути будь-яке інше значення, функція повинна мати оператор {{jsxref("Statements/return", "return")}}, який вказує значення, що буде повернене.
Функції можуть оголошуватися за певної умови, тобто, оголошення функції може бути вкладене у if
, однак, результат різниться між реалізаціями, тому цей шаблон не варто використовувати у виробничому коді. Для умовного створення функції використовуйте, натомість, функціональний вираз.
var hoisted = "foo" in this; console.log(`Ім'я 'foo'${hoisted ? "" : " не"} піднімається. typeof foo дорівнює ${typeof foo}`); if (false) { function foo(){ return 1; } } // У Chrome: // Ім'я 'foo' піднімається. typeof foo дорівнює undefined // // У Firefox: // Ім'я 'foo' піднімається. typeof foo дорівнює undefined // // У Edge: // Ім'я 'foo' не піднімається. typeof foo дорівнює undefined // // У Safari: // Ім'я 'foo' піднімається. typeof foo дорівнює function
Результат буде такий самий для умови, яка дорівнює true
var hoisted = "foo" in this; console.log(`Ім'я 'foo' ${hoisted ? "" : " не"} піднімається. typeof foo дорівнює ${typeof foo}`); if (true) { function foo(){ return 1; } } // У Chrome: // Ім'я 'foo' піднімається. typeof foo дорівнює undefined // // У Firefox: // Ім'я 'foo' піднімається. typeof foo дорівнює undefined // // У Edge: // Ім'я 'foo' не піднімається. typeof foo дорівнює undefined // // У Safari: // Ім'я 'foo' піднімається. typeof foo дорівнює function
Оголошення функцій у JavaScript піднімаються наверх замикаючої функції або глобальної області видимості. Ви можете використовувати функцію до того, як оголосили її:
hoisted(); // виводить "foo" function hoisted() { console.log('foo'); }
Зауважте, що {{jsxref("Operators/function", "функціональні вирази")}} не піднімаються:
notHoisted(); // TypeError: notHoisted is not a function var notHoisted = function() { console.log('bar'); };
function
Наступний код оголошує функцію, яка повертає загальну суму продажів, отримуючи кількість одиниць продуктів a
, b
та c
.
function calc_sales(units_a, units_b, units_c) { return units_a * 79 + units_b * 129 + units_c * 699; }
Специфікація | Статус | Коментар |
---|---|---|
{{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')}} | |
{{SpecName('ES1', '#sec-13', 'Function definition')}} | {{Spec2('ES1')}} | Початкове визначення. Реалізоване у JavaScript 1.0. |
{{Compat("javascript.statements.function")}}