Подъем означает, что переменные будут созданы «наверху» - но это ничего не изменит в то время, когда происходит присвоение значения , часть b = 5
все еще происходит, когдаисполнение достигает той части, где оно написано. Поэтому, если вы позвоните a()
до этого, b
существует , но еще не получил никакого назначенного значения ... следовательно, undefined