次のコードについて考えてみます。
<html><head></head>
<body>
<script type="text/javascript">
var outside_scope = "outside scope";
function f1() {
alert(outside_scope) ;
}
f1();
</script>
</body>
</html>
このコードの出力は、アラートボックスに「スコープ外」というメッセージが表示されることです。しかし、コードを次のように少し変更すると、次のようになります。
<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>
警告ボックスに「未定義」というメッセージが表示されます。どちらの場合も「未定義」と表示されていれば、ロジックを理解できたはずです。しかし、それは起こっていません。2番目の場合にのみ「未定義」と表示されます。どうしてこれなの?
よろしくお願いします!