Оголошення функції (функціональний оператор) визначає функцію з вказаними параметрами.
Ви також можете визначати функції за допомогою конструктора Function
та функціонального виразу
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Синтаксис
function name([param[, param,[..., param]]]) { [statements] }
name
- Ім'я функції.
param
- Ім'я аргументу, що передається у функцію. Максимальна кількість аргументів відрізняється у різних рушіях.
statements
- Інструкції, які складають тіло функції.
Опис
Функція, утворена через оголошення функції, є об'єктом Function
, і має усі властивості, методи та поведінку об'єктів Function
. Більш детальну інформацію щодо функцій дивіться у статті Function
.
Функція також може бути створена через за допомогою виразу (дивіться функціональний вираз
).
За замовчуванням функції повертають undefined
. Щоб повернути будь-яке інше значення, функція повинна мати оператор 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');
}
Зауважте, що функціональні вирази
не піднімаються:
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;
}
Специфікації
Специфікація | Статус | Коментар |
---|---|---|
ECMAScript (ECMA-262) The definition of 'Function definitions' in that specification. |
Living Standard | |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Function definitions' in that specification. |
Standard | |
ECMAScript 5.1 (ECMA-262) The definition of 'Function definition' in that specification. |
Standard | |
ECMAScript 3rd Edition (ECMA-262) The definition of 'Function definition' in that specification. |
Standard | |
ECMAScript 1st Edition (ECMA-262) The definition of 'Function definition' in that specification. |
Standard | Початкове визначення. Реалізоване у JavaScript 1.0. |
Сумісність з веб-переглядачами
BCD tables only load in the browser