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?