Dlaczego zmienna shadowed ma wartość undefined, gdy jest zdefiniowana w zewnętrznym zakresie?
Rozważ następujący fragment kodu:
<html><head></head>
<body>
<script type="text/javascript">
var outside_scope = "outside scope";
function f1() {
alert(outside_scope) ;
}
f1();
</script>
</body>
</html>
Wynik tego kodu jest taki, że w oknie alertu wyświetlany jest komunikat „zakres zewnętrzny”. Ale jeśli nieznacznie zmodyfikuję kod jako:
<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>
okno alertu wyświetla komunikat „niezdefiniowany„. Mógłbym zrozumieć logikę, jeśli w obu przypadkach wyświetla się„ niezdefiniowany ”, ale tak się nie dzieje, wyświetla się„ niezdefiniowany ”tylko w drugim przypadku.
Z góry dziękuje za twoją pomoc!