--- title: Оголошення функції slug: Web/JavaScript/Reference/Statements/function tags: - JavaScript - Функція translation_of: Web/JavaScript/Reference/Statements/function ---
{{jsSidebar("Statements")}}

Оголошення функції (функціональний оператор) визначає функцію з вказаними параметрами.

Ви також можете визначати функції за допомогою конструктора {{jsxref("Function")}} та {{jsxref("Operators/function", "функціонального виразу")}}.

{{EmbedInteractiveExample("pages/js/statement-function.html")}}

Синтаксис

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")}}

Див. також