Введите ваш адрес почты


sdcvoy.ru
Понравился сайт? Поделись с друзьями!
Главная » Javascript » Nfe-imenovannye-funkcionalnye-vyrazheniya

NFE — именованные функциональные выражения

Я уже как-то в одном из уроков рассказывал про функциональные выражения. В JavaSript есть ещё такое понятие, как именованные функциональные выражения (Named Function Expression) или сокращено NFE. Служат они чаще всего для вызова функции внутри саму себя. Это особенно видно на примере рекурсии. Синтаксис имеет следующий вид:


var имя переменной = function имя функции (параметры) {
 //  код функции
}

Давайте для начала вычислим степень числа:

function pow(x, n) {
return (n != 1) ? x * pow(x, n - 1) : x;
}
alert( pow(4, 2) ); // 16

А теперь давайте попробуем переименовать имя функции и вызвать её под другим именем:

function pow(x, n) {
return (n != 1) ? x * pow(x, n - 1) : x;
};
var z=pow;
pow=undefined;
alert( z(4, 2) ); // ошибка

Как видно мы не смогли присвоить переменной имя функции, но если мы будем использовать NFE, то всё выйдет отлично, давайте посмотрим:

var p=function pow(x, n) {
return (n != 1) ? x * pow(x, n - 1) : x;
};
var z=p;
pow=undefined;
alert( z(4, 2) ); // 16

Заметим, что в Function Declaration так делать нельзя. Ещё надо сказать, что NFE воспринимают все браузеры хорошо, кроме IE8-.



наверх