Это происходит из-за того, что имя переменной совпадает с именем функции «a». Таким образом, из-за подъема Javascript он пытается решить конфликт имен и он вернет a = 1.
Я тоже был смущен, пока не прочитал этот пост в разделе «Подъем JavaScript» http: // www.ufthelp.com/2014/11/JavaScript-Hoisting.html
Надеюсь, что это поможет.