Fix IE8 variable hoisting of apply function in  if/else.

Hi!

This fixes a bug where a function declaration was used as a function expression (e.g the different between `function foo(){}` and `var foo = function(){}`). This causes errors in IE8 that breaks async routing (and possible in other implementations as well, see http://stackoverflow.com/a/10069457).

This changes apply to a function expression instead.