Page 88 - 6108
P. 88
Як що тіло функції обертається в {...}, то її результат вже не повертається
автоматично. Така функція повинна робити явний return, якщо звичайно хоче
що-небудь повернути.
Функції-стрілки дуже зручні в якості коллбеков, наприклад:
let arr = [5, 8, 3];
let sorted = arr.sort ((a, b) => a - b);
Функції-стрілки мають свої особливості
1) Вони не мають свого контексту this. Усередині функцій-стрілок - той
же this, що і зовні.
2) Функції стрілки не можна запускати з new. Відсутність у функції-
стрілки "свого this" тягне за собою природне обмеження: такі функції не можна
використовувати в якості конструктора, тобто не можна викликати через new.
3) Функції-стрілки не мають свого масиву arguments. Як arguments
використовуються аргументи зовнішньої «звичайної» функції.
Функціональні вирази
JavaScript функція є значенням, таким же як рядок або число.
Як і будь-яке значення, оголошену функцію можна вивести, ось так:
function sayHi () {
alert ( "Привіт");
}
alert (sayHi); // виведе код функції
Функцію можна скопіювати в іншу змінну:
var func = sayHi;
func (); // Привіт
Існує альтернативний синтаксис для оголошення функції, який ще більш
наочно показує, що функція – це всього лише різновид значення змінної. Він
називається «Function Expression» (функціональний вираз) і виглядає так:
var f = function (параметри) {
// тіло функції
};
Наприклад
var sayHi = function () {
alert ( "Привіт" );
};
sayHi();
«Класичне» оголошення функції, виду function ім'я (параметри) {...},
називається в специфікації мови «Function Declaration».
Function Declaration – функція, оголошена в основному потоці коду.
Function Expression – оголошення функції в контексті будь-якого виразу,
наприклад присвоювання.
Основна відмінність між ними: функції, оголошені як Function Declaration,
створюються інтерпретатором до виконання коду. Тому їх можна викликати до
оголошення.