function foo() {};
foo.toString() //-> "function foo() {}"
var bar = foo;
bar.toString() //-> "function foo() {}"
Таким образом, он объявляет именованную функцию.Независимо от того, какая переменная указывает на это, ее имя сохраняется.Использование другого синтаксиса является анонимной функцией, которая является безымянной, и доступ к ней возможен только в том случае, если на нее ссылается переменная.
var foo = function() {};
foo.toString() //-> "function () {}"
var bar = foo;
bar.toString() //-> "function () {}"
Что касается стиля, который следует использовать, то здесь нет основного правила.Хотя я лично предпочитаю анонимный синтаксис, поскольку он напоминает мне, что функции действительно являются объектами, которые можно передавать.Я также склоняюсь к подходу «все в большом главном объекте», который требует, чтобы функции объявлялись таким образом.
var MyThingy = {
foo: function() { alert('foo') },
bar: function() { MyThingy.foo() }
}
Но после создания функций различия не очень важны и ведут себятот же самый.Но у анонимного синтаксиса меньше той магии сканирования, о которой вы упомянули, и меньше ошибок в сложном коде и нечетных ситуациях.