Оголошення функції

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

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

Синтаксис

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;
}

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

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

BCD tables only load in the browser

Див. також