Я просто прочитал замечательную статью о JavaScript Scoping and Hoisting от Ben Cherry, в которой он приводит следующий пример:
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
alert(a);
Используя приведенный выше код, браузер будет предупреждать "1".
Я все еще не уверен, почему он возвращает "1". Некоторые из вещей, о которых он говорит, напоминают: Все объявления функций поднимаются вверх. Вы можете использовать переменную с помощью функции. Все еще не нажимаю на меня.