O que acontece quando o nome da variável JavaScript e o nome da função são iguais?

Eu tenho o código a seguir, onde declaro uma função e depois dela, uma variável com o mesmo nome da função:

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

var a;
alert(a);

Eu esperava que isso alertasseundefined, mas se eu executá-lo, o alerta exibirá o seguinte:

função a (x) {
retornar x * 2
}

Se eu atribuir um valor à variável (comovar a = 4), o alerta exibirá esse valor (4), mas sem essa alteraçãoa será reconhecido como uma função.

Por que isso está acontecendo?

questionAnswers(4)

yourAnswerToTheQuestion