Показать сообщение отдельно
  #9 (permalink)  
Старый 09.12.2012, 04:08
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Из всех предложенных вариантов я не увидел ни одной именованной функции. Ведь именованные функции объявляются вот так:
function named () {};


Есть 2 вида функций, именованные и анонимные. Именованная функция видна везде (везде в области видимости), а анонимная - только после объявления. Почитать в учебнике.

Есть еще одно отличие в этих функциях, и кажется это отличие как раз и послужило названием для этих типов функций (именованные и анонимные).
//    Объявляем именованную функцию с именем named и интерпретатор сам
//    положит ее в переменную named 
function named () {
};


//    Объявляем неименованную функцию и ложим ее в переменную  noNamed 
var noNamed = function () {
};


//    Объявляем именованную функцию с именем ohoho и ложим ее в переменную wtf
var wtf = function ohoho () {
};

alert(named.name);
alert(noNamed.name);
alert(wtf.name);


Теперь к вопросу:
Сообщение от Shitbox2
Как сделать именованую функцию, запускающуюся при объявлении?
Например вот так:
(function named () {
    //    Ваш код
}());


С виду бесполезная конструкция, но подобную именованную функцию можно вызвать из самой себя, это будет полезно в рекурсии. При этом эта функция не объявляет себя в области видимости в которой она находится (возможно это минус).

Ну и если все же нужно сохранить ссылку на эту функцию то Aetae выше уже писал примеры.
Ответить с цитированием