это: 
function lala(){
    lala();
}
 и это: 
var f = function() { 
    f();
};
 одно и тоже, разница лишь в том что первый вариант объявляется сразу вначале программы, и к ней можно обратиться сразу.. А второй вариант только после того как пройдет интерпретатор.
тоесть в первом варианте это будет работать:
lala(); // сработает сразу, так как функции инициализируются сразу
function lala(){
    alert( 'работает до определения функции' );
}
 а этот вариант ошибку выдаст:
lala(); // выдаст ошибку error: 'lala' is not a function
var lala = function(){
    alert( 'работает до определения функции' );
}