Page 66 - 6105
P. 66
function sum (a, b) {
return a + b;
}
// Function Expression
var sum = function (a, b) {
return a + b;
}
Обидва цих оголошення говорять інтерпретатору: "Оголоси змінну sum,
створи функцію з зазначеними параметрами та кодом і збережи її в sum".
Основна відмінність між ними: функції, оголошені як Function Declaration,
створюються інтерпретатором до виконання коду. Тому їх можна викликати до
оголошення, наприклад:
sayHi ( "Вася"); // Привіт Вася
function sayHi (name) {
alert ( "Привіт," + name);
}
А якби це було оголошення Function Expression, то такий виклик б не
спрацював:
sayHi ( "Вася"); // помилка!
var sayHi = function (name) {
alert ( "Привіт," + name);
}
Це через те, що JavaScript перед запуском коду шукає в ньому Function
Declaration (їх легко знайти: вони не є частиною виразів і починаються зі слова
function) і обробляє їх. А Function Expression створюються в процесі виконання
виразу, в якому функція буде створена при операції присвоювання sayHi =
function … Як правило, можливість Function Declaration викликати функцію до
65