Нет никакой разницы, кроме синтаксиса.
Что касается вашего беспокойства по поводу второго способа сделать это:
Рассмотрим:
(function namedfunc () { ... }())
namedfunc
все равно не будет находиться в глобальной области действия, даже если вы указали имя.То же самое касается анонимных функций.Единственный способ получить его в этой области - это присвоить его переменной внутри паренов.
((namedfunc = function namedfunc () { ... })())
Внешние парены не нужны:
(namedfunc = function namedfunc () { ... })()
Но вы этого не сделалиВ любом случае, хотите ли вы это глобальное объявление?
Итак, оно сводится к:
(function namedfunc () { ... })()
И вы можете уменьшить его еще больше: имя не нужно, поскольку оно никогда не будет использоваться (если ваша функция не является рекурсивной ... и даже тогда вы можете использовать arguments.callee
)
(function () { ... })()
Я так об этом думаю (может быть, это неправильно, я еще не читал спецификацию ECMAScript).Надеюсь, это поможет.