Necesita explicación sobre el problema de alcance en javascript
Tengo este codigo
var Variable = "hello";
function say_hello ()
{
alert(Variable);
var Variable = "bye";
}
say_hello();
alert(Variable);
Ahora, cuando leí este código por primera vez, pensé que alertaría "hola" dos veces, pero el resultado que obtengo es que alerta "indefinido" la primera vez y "hola" la segunda vez. ¿Alguien me puede explicar por qué?