Алексей Самсонов: спасибо нашел то что нужно.
Оба этих объявления говорят интерпретатору: "объяви переменную sum, создай функцию с указанными параметрами и кодом и сохрани её в sum".
zlowar: повнимательнее, ведь "Основное отличие между ними: функции, объявленные как Function Declaration, создаются интерпретатором до выполнения кода. Поэтому их можно вызвать до объявления. А если бы это было объявление Function Expression, то такой вызов бы не сработал:
sayHi("Вася"); // ошибка!
var sayHi = function(name) {
alert( "Привет, " + name );
}
Это из-за того, что JavaScript перед запуском кода ищет в нём Function Declaration (их легко найти: они не являются частью выражений и начинаются со слова function) и обрабатывает их.
А Function Expression создаются в процессе выполнении выражения, в котором созданы, в данном случае – функция будет создана при операции присваивания sayHi = function...
Как правило, возможность Function Declaration вызвать функцию до объявления – это удобно, так как даёт больше свободы в том, как организовать свой код.
Можно расположить функции внизу, а их вызов – сверху или наоборот."