¿Qué sucede cuando el nombre de la variable de JavaScript y el nombre de la función son iguales?

Tengo el siguiente código, donde declaro una función y, después, una variable con el mismo nombre que la función:

function a(x) {
    return x * 2;
}

var a;
alert(a);

Esperaba que esto alertaraundefined, pero si lo ejecuto, la alerta mostrará lo siguiente:

función a (x) {
volver x * 2
}

Si asigno un valor a la variable (comovar a = 4), la alerta mostrará ese valor (4), pero sin este cambioa será reconocido como una función.

¿Por qué está pasando esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta