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