вот так у вас будет выкидываться ошибка о том что не определена функция/переменная bar.
var foo = bar();
var bar = function () {
return 'Broken!';
};
а вот так будет работать:
var foo = bar();
function bar () {
return 'It Works!';
}
Это пожалуй основное отличие в контексте JS. Так же именованные функции обычно служат конструкторами для новых объектов, а анонимные - для передачи как аргументы функций.