выражение анонимной и именованной функции

Прежде всего, привет всем, и извините за мой английский.
Я все равно воспользуюсь опытом и доступностью этого сообщества.
Хотя я прочитал много сообщений, мое невежество не позволяет мне понять фундаментальная концепция.
Мои сомнения относительно разницы между выражением анонимной и именованной функции.
Я знаю разницу между объявлением функции и выражением, например:

function foo(){alert ('Hello')}
var foo=function(){alert ('Hello')}

но я не понимаю разницы между

N1: var foo=function {alert ('Hello')}
N2: var foo=function foo(){alert ('Hello')}
N3: var foo=function bar(){alert ('Hello')}

Если возможно, я бы знал, когда уместно использовать первую или вторую функцию и каковы последствия этого выбора.
Я прочитал много сообщений, таких как Это
или Это
или Это
но в этих постах всегда объясняется то, что я уже знаю: разница между объявлением функции и выражением, а не между анонимным и именованным выражением функции.

Пожалуйста, может ли кто-нибудь развеять сомнения этого невежественного (меня) на некоторых примерах? Любой пример или предложения будут прочитаны с удовольствием, всем заранее спасибо.


person Devima    schedule 20.06.2014    source источник
comment
Я попытался найти дубликат, который соответствует вашим конкретным проблемам. Пожалуйста, оставьте мне слово здесь, если я потерпел неудачу.   -  person Frédéric Hamidi    schedule 20.06.2014
comment
@FrédéricHamidi: Спасибо за интерес, но, честно говоря, ответ кажется очень скудным, не могли бы вы привести мне практический пример?   -  person Devima    schedule 20.06.2014
comment
@FrédéricHamidi: Первая ссылка, которую нашел ОП, тоже подойдет, хотя мне пришлось ее снова открыть. Но мне также нравится, что вы связали один ответ с моим ответом :-)   -  person Bergi    schedule 20.06.2014
comment
@Devima, самый конкретный пример, который приходит на ум, - это рекурсия: вы можете захотеть иметь функциональное выражение, которое вызывает само себя, и оно может делать это только в том случае, если у него есть имя.   -  person Frédéric Hamidi    schedule 20.06.2014
comment
@Devima: вот пример рекурсии в немедленно выполняемом выражении именованной функции. То, что функции именования всегда полезны, должно объясняться само собой.   -  person Bergi    schedule 20.06.2014
comment
@FrédéricHamidi: я невежда и не понимаю, в этом случае я могу использовать выражение анонимной функции в рекурсивном рекламном коде, все равно работает: var foo = function(i) { if (i›10) { return i; } иначе { вернуть foo(++i); } } console.log(foo(5)); console.log(foo(15));   -  person Devima    schedule 20.06.2014
comment
@Devima, но что произойдет, если вы не хотите создавать переменную foo? Если вы напрямую передаете выражение функции другой функции или, например, назначаете его как часть литерала объекта?   -  person Frédéric Hamidi    schedule 20.06.2014
comment
@FrédéricHamidi:Спасибо, я начинаю понимать   -  person Devima    schedule 20.06.2014
comment
@Bergi: спасибо, твой пример определенно развеивает мои сомнения   -  person Devima    schedule 20.06.2014