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