グローバル変数でもscriptタグの順番に注意
- グローバル変数でも、前方の
script
タグから参照すると、undefined
ではなくエラー。
- ローカル変数でもトップレベルのものなら、後方の
script
タグから参照できる。
- どの
script
タグも、トップレベルは同じグローバルスコープ。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<script> // その1
'use strict'
// モードによらず、グローバル変数でも、前方のscriptタグからアクセスするとエラー。
// グローバル // ReferenceError
// ローカル // ReferenceError
</script>
<title>scriptタグの順番に注意</title>
<script> // その2
// var宣言なら宣言前の参照はエラーにならない(同じscriptタグ内)。
console.log(グローバル) // undefined
var グローバル = 'global'
// let宣言なら宣言前の参照はエラー。
// ローカル // ReferenceError
let ローカル = 'local'
</script>
</head>
<body>
<script> // その3
// ローカル変数でも、後方のscriptタグからアクセスできる。
console.log(グローバル, ローカル) // global local
</script>
</body>
</html>