Hoisting is in general a bit counter-intuitive, but you get the same with a `var` statement, only that the value is `undefined` and you'll get an error if try to call it.

Using named functions is in general a good idea, but using a `var` statement to avoid hoisting isn't.

Also, ES6 will specify the `name` property of functions and it will be set if the function is the initial argument in a variable declaration. Therefore, this change will probably be unnecessary as soon as V8 implements the correct behavior.