JavaScript Визначення функцій
JavaScript функції визначаються за допомогою ключового слова function
.
Ви можете використовувати оголошення функції або вираз функції.
Оголошення функцій
Раніше в цьому посібнику ви дізналися, що функції оголошуються за допомогою такого синтаксису:
function functionName(параметри) {
// код для виконання
}
Оголошені функції не виконуються відразу. Вони "зберігаються для подальшого використання", і будуть виконані пізніше, коли їх викликають (звернуться до них).
Крапка з комою використовується для розділення виконуваних інструкцій JavaScript.
Оскільки оголошення функції не є виконуваною інструкцією, не прийнято закінчувати її крапкою з комою.
Вирази функцій
Функція JavaScript також може бути визначена за допомогою виразу.
Вираз функції можна зберегти в змінній:
Після збереження виразу функції в змінній цю змінну можна використовувати як функцію:
Наведена вище функція насправді є анонімною функцією (функцією без імені).
Функціям, які зберігаються у змінних, не потрібні імена функцій. Вони завжди викликаються за допомогою імені змінної.
Наведена вище функція закінчується крапкою з комою, оскільки вона є частиною виконуваної інструкції.
Конструктор Function()
Як ви бачили в попередніх прикладах, функції JavaScript визначаються за допомогою ключового слова function
.
Функції також можна визначити за допомогою вбудованого конструктора JavaScript функцій, що викликається за допомогою Function()
.
Приклад
const myFunction = new Function("a", "b", "return a * b");
let x = myFunction(4, 3);
Спробуйте самі »
Насправді вам не потрібно використовувати конструктор функцій. Наведений вище приклад такий самий, як написання:
Приклад
const myFunction = function (a, b) {return a * b};
let x = myFunction(4, 3);
Спробуйте самі »
У більшості випадків ви можете уникнути використання ключового слова new
у JavaScript.
Функція підйому (хостинг)
Раніше в цьому посібнику ви дізналися про "підйом" (JavaScript Хостинг).
Підйом (хостинг) — це типова поведінка JavaScript, яка переміщує оголошення у верхню частину поточної області.
Підйом застосовується до оголошень змінних і оголошень функцій.
Завдяки цьому JavaScript функції можна викликати до того, як вони будуть оголошені:
myFunction(5);
function myFunction(y) {
return y * y;
}
Функції, визначені за допомогою виразу, не піднімаються.
Самовикликаючі функції
Функціональні вирази можна зробити "самовикликаючими".
Вираз, що викликається самостійно, викликається (запускається) автоматично, без виклику.
Вирази функції виконуватимуться автоматично, якщо після виразу стоїть ().
Ви не можете самостійно викликати оголошення функції.
Ви повинні додати дужки навколо функції, щоб вказати, що це вираз функції:
Наведена вище функція фактично є анонімною функцією, яка самостійно викликається (функція без імені).
Функції можна використовувати як значення
Як значення можна використовувати функції JavaScript:
Функції JavaScript можна використовувати у виразах:
Функції є об’єктами
Оператор typeof
у JavaScript повертає "функцію" для функцій.
Але функції JavaScript найкраще можна описати як об’єкти.
Функції JavaScript мають як властивості, так і методи.
Властивість arguments.length
повертає кількість аргументів, отриманих під час виклику функції:
Метод toString()
повертає функцію як рядок:
Приклад
function myFunction(a, b) {
return a * b;
}
let text = myFunction.toString();
Спробуйте самі »
Функція, визначена як властивість об’єкта, називається методом об’єкта.
Функція, призначена для створення нових об’єктів, називається конструктором об’єкта.
Функції стрілок
Функції стрілок дозволяють використовувати короткий синтаксис для запису функціональних виразів.
Вам не потрібні ключове слово function
, return
і фігурні дужки.
Приклад
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
Спробуйте самі »
Функції стрілок не мають власного this
. Вони погано підходять для визначення об’єктних методів.
Функції стрілок не підняті. Їх потрібно визначити перед використанням.
Використання const
безпечніше, ніж використання var
, оскільки вираз функції завжди є постійним значенням.
Ви можете опустити ключове слово return
і фігурні дужки, лише якщо функція є однією інструкцією. Через це може бути гарною звичкою завжди зберігати їх:
Функції стрілок не підтримуються в IE11 або раніших версіях.