Page 89 - 6108
P. 89
Це через те, що JavaScript перед запуском коду шукає в ньому Function
Declaration (їх легко знайти: вони не є частиною виразів і починаються зі слова
function) і обробляє їх.
А Function Expression створюються в процесі виконання виразу, в якому
створені, в даному випадку – функція буде створена при операції присвоювання
sayHi = function ...
Як правило, можливість Function Declaration викликати функцію до
оголошення – це зручно, так як дає більше свободи в тому, як організувати свій
код.
Функціональне вираз, який не записується в змінну, називають анонімної
функцією. Дійсно, навіщо нам записувати функцію в змінну, якщо ми не
збираємося викликати її ще раз? Можна просто оголосити безпосередньо там,
де функція потрібна.
Існує ще один спосіб створення функції, який використовується дуже
рідко. Він дозволяє створювати функцію повністю «на льоту».
new Function (params, code):
– params – параметри функції через кому у вигляді рядка.
– code – код функції у вигляді рядка.
var sum = new Function('a,b', ' return a+b; ');
var result = sum(1, 2);
Таким чином можна конструювати функцію, код якої невідомий на момент
написання програми, але рядок з ним генерується або подгружается динамічно
під час її виконання.
Приклад використання – динамічна компіляція шаблонів на JavaScript.
Якщо функція необхідна лише один раз, можна використати функцію, яка
негайно викликається – це синтаксична конструкція, що дозволяє викликати
функцію зразу ж в місці її визначення.
(function () {
// ...
} ());
Або так
(function () {
// ...
})();
Огортання виразу в круглі дужки, використовується для того, щоб сказати
інтерпретатора, що ключове слово function описує функціональне вираз. Також
слід звернути увагу, що функція, яка привласнюється змінної, є фукціональним
виразом, тому не вимагає додаткових дужок.
Так само, як і в звичайні функції, в негайно викликані функції можна
передавати параметри:
(function sum (a, b) {
console.log (a + b); // 5
})(2, 3);