Сообщение от koderman
|
Какая разница между анонимной функцией и той которая имеет имя?
|
Для начала, есть два типа функций: функция-выражение, и функция-объявление.
Функция-объявление выглядит так:
function fn() {
} // точка с запятой не нужна
Она может быть вызвана до (!) ее объявления. Она не может быть анонимной.
Функция-выражение используется для callback-ов, для незамедлительного вызова и т.д. Она может быть анонимной. А может и не быть таковой.
Сообщение от koderman
|
Вот анонимная. Написали, исполнилась
|
Твой код неправильный, он вызовет SyntaxError.
Анонимность функции никак не влияет на ее "исполнение". Анонимность птосто означает что у функции нет имени. А следовательно, единственный вариант как-то ее использовать - это сделать что-то с ссылкой на нее.
То есть это либо сразу же вызвать функцию:
(function(){})(); // скобки подсказывают интерптератору, что наша функция является функцией-выражением
Либо присвоить ссылку в переменную:
var fn = function() {}; // Да да, это анонимная функция!
Либо передать параметром в вызов другой функции:
$.post('url', function(){});
Но все эти вещи можно делать и с не-анонимной функцией:
(function fn(){ alert(typeof fn) })();
var fn = function fn() {}; //(IE старых версий колбаснет от такого кода)
$.post('url', function fn(){});