JavaScript 'подъем' [дубликат]

На этот вопрос уже есть ответ здесь:

Javascript функция определения объема и подъема 15 ответов

Я столкнулся с «подъемом» JavaScript и не понял, как на самом деле работает этот фрагмент кода:

var a = 1;

function b() {
    a = 10;
    return;

    function a() {}
}

b();
alert(a);

Я знаю, что объявление функции вроде (function a() {} ) собирается быть поднятым к вершине функцииb объем, но он не должен переопределять значениеa (потому что объявления функций переопределяют объявления переменных, но не инициализацию переменных), поэтому я ожидал, что значение предупреждения будет 10 вместо 1 !!

Ответы на вопрос(5)

Ваш ответ на вопрос