¿Por qué la redeclaración de un identificador de función dentro de un bloque try arroja un SyntaxError?

Las siguientes líneas de JavaScript

try {
    function _free() {}
    var _free = 1;
} finally { }

resultar en el siguiente error:

 Uncaught SyntaxError: Identifier '_free' has already been declared

Sin embargo, los siguientes dos bloques de código JavaScript no lo hacen:

Sin eltry alcance del bloque:

function _free() {}
var _free = 1;

Dentro de unfunction alcance:

function a() {
    function _free() {}
    var _free = 1;
}

¿Pero por qué?

(Entorno de prueba: cromo 61.0.3126.0)

Respuestas a la pregunta(2)

Su respuesta a la pregunta