Что происходит, когда имя переменной JavaScript и имя функции совпадают?

У меня есть следующий код, где я объявляю функцию, а после нее переменную с тем же именем, что и функция:

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

var a;
alert(a);

Я ожидал, что это насторожитundefined, но если я запусту его, предупреждение будет отображать следующее:

функция а (х) {
возврат х * 2
}

Если я назначу значение переменной (например,var a = 4), предупреждение отобразит это значение (4), но без этого измененияa будет распознан как функция.

Почему это происходит?

Ответы на вопрос(2)

Ваш ответ на вопрос