В чем разница обьявлений функций js?
Все сравнения есть тут.Основное отличие между ними: функции, объявленные как Function Declaration, создаются интерпретатором до выполнения кода, поэтому их можно вызвать до объявления, например:// Function Declaration
sum(1,2) //3
function sum(a, b) {
  return a + b;
}

// Function Expression
summer(1,2) //Ошибка, summer не определена 
var summer = function(a, b) {
  return a + b;
}P.s А еще есть выделяющийся из толпы конструктор Function. Он позволяет создавать функции из строки, но его детища, заразы, не запоминают окружение, в котором созданы.var 
     abs = "Я переменная",
     func = (function(abs){
         return new Function("", "return abs;");
     })("Я аргумент")
;

//Вызовем созданную функцию
alert(func()); //"Я переменная"
В первом случае функция называется Function Expression, во втором Function Declaration, отличаются тем, что Function Declaration, создаются интерпретатором до выполнения кода, а значит функция выполнится в момент инициализации, а не в момент ее явного вызова.