Just to add on to what Steve said. You'll hear the term "hoisted" when referring to function declarations.
In this example, it doesn't necessarily matter when the function is declared because when your script is parsed it first goes through and looks for all function declarations.
i.e.
alert(fnDeclaration());
function fnDeclaration() {
return "It works!";
}
In the case when you do a function expression, you can only use the function after it has been assigned because functions are values in JavaScript.
i.e.
alert(fnDeclaration());
var fnDeclaration = function() {
return "It won't work :(";
}
This is the general gist of the differences between the two.