Конспект JS-course

Named Function Expression

Источник: http://learn.javascript.ru/named-function-expression

Обычно то, что называют «именем функции» — на самом деле, является именем переменной, в которую присвоена функция. Если функцию переместить в другую переменную — она сменит «имя». В JavaScript есть способ указать имя, действительно привязанное к функции. Оно называется Named Function Expression (NFE) или, по-русски, именованное функциональное выражение.

Простейший пример NFE выглядит так:

var f = function sayHi(...) { /* тело функции */ };

Имя функционального выражения (sayHi) имеет особый смысл. Оно доступно только изнутри самой функции.

var f = function sayHi(name) {
  alert(sayHi); // изнутри функции - видно (выведет код функции)
};

alert(sayHi); // снаружи - не видно (ошибка: undefined variable 'sayHi')

Ещё одно принципиальное отличие имени от обычной переменной заключается в том, что его нельзя перезаписать.

NFE используется в первую очередь в тех ситуациях, когда функцию нужно передавать в другое место кода или перемещать из одной переменной в другую.

Внутреннее имя позволяет функции надёжно обращаться к самой себе, где бы она ни находилась.