Take a test:
function xyz() { .. }
blocks are defined at parse time.
If many functions have the same name, it's the last defined which takes the precedence.
However, you can define functions at runtime using statements :
var say = function() { alert( "ABOVE" ); }
say();
say = function() { alert( "BELOW" ); }
will output ABOVE
.
(JSFiddle)