Показать сообщение отдельно
  #6 (permalink)  
Старый 10.02.2014, 04:58
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от 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(){});
__________________
В личку только с интересными предложениями

Последний раз редактировалось danik.js, 10.02.2014 в 05:02.
Ответить с цитированием