Page 76 - 6105
P. 76
Ім'я функціонального виразу (sayHi) має особливий сенс. Воно є тільки
зсередини самої функції. Це обмеження видимості входить в стандарт JavaScript і
підтримується всіма браузерами, крім IE8-.
var f = function sayHi (name) {
alert (sayHi); // зсередини функції - видно (виведе
код функції)
};
alert (sayHi); // зовні - не видно (помилка: undefined
variable 'sayHi')
Крім того, ім'я NFE не можна перезаписати:
var test = function sayHi (name) {
sayHi = "тест"; // спроба перезапису
alert (sayHi); // function ... (перезапис не вдалася)
};
test ();
У режимі use strict у разі виконання коду вище, буде повідомлення про
помилку.
Як правило, ім'я NFE використовується для єдиної мети – дозволити
зсередини функції викликати саму себе. NFE використовується в першу чергу в
тих ситуаціях, коли функцію потрібно передавати в інше місце коду або
перемістити з однієї змінної в іншу. Внутрішнє ім'я дозволяє функції надійно
звертатися до самої себе, де б вона не знаходилася.
Наприклад, функція-факторіал з завдання обчислити факторіал:
function f (n) {
return n? n * f (n - 1): 1;
};
alert (f (5)); // 120
Спробуємо перенести її в іншу змінну g:
75