为什么最后的输出是“3a:1”(严格为假)?

Mur*_*hen 5 javascript ecmascript-5

var a;
console.log('1 a: ' + a);
if (true) {
    a = 1;
    function a() { };
    a = 5;
    console.log('2 a: ' + a);
}
console.log('3 a: ' + a);
Run Code Online (Sandbox Code Playgroud)

输出是:

1 a: undefined
2 a: 5
3 a: 1
Run Code Online (Sandbox Code Playgroud)

我无法理解最后的输出“3 a: 1”。为什么不是“3 a:5”?