function文とfunction式の違い

console.log(typeof fn1);  // undefined
console.log(typeof fn2);  // function
var fn1 = function(){};
function fn2(){}

varによる変数宣言は、スコープに入ったとき変数の追加だけ行われ、宣言のある行で値の代入が行われる。それに対してfunction式で定義した関数は、スコープに入ったときから使用可能。なので

function Hoge(){}

var Hoge = function(){};

は完全に同じではない。