--- 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]
}
nameparamstatementsФункція, утворена через оголошення функції, є об'єктом 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")}}