Por que a variável sombreada é avaliada como indefinida quando definida no escopo externo?
Considere o seguinte trecho de código:
<html><head></head>
<body>
<script type="text/javascript">
var outside_scope = "outside scope";
function f1() {
alert(outside_scope) ;
}
f1();
</script>
</body>
</html>
A saída deste código é que a caixa de alerta exibe a mensagem "escopo externo". Mas, se eu modificar ligeiramente o código como:
<html><head></head>
<body>
<script type="text/javascript">
var outside_scope = "outside scope";
function f1() {
alert(outside_scope) ;
var outside_scope = "inside scope";
}
f1();
</script>
</body>
</html>
a caixa de alerta exibe a mensagem "Indefinido"Eu poderia ter entendido a lógica se ela exibir" indefinida "em ambos os casos. Mas isso não está acontecendo. Ela exibe" indefinida "apenas no segundo caso. Por que isso acontece?
Agradeço antecipadamente por sua ajuda!