宣言前の参照と関数スコープ

変数宣言前の参照はvarletで少し違うし、関数スコープでの挙動に注意。

// var宣言の前に参照してもエラーにならない。
console.log(var変数) // undefined
var var変数 = 'トップ'

// letやconst宣言の前に参照するとエラー。
// let変数 // ReferenceError
let let変数 = 'トップ'

function 関数() {
  // 同名の変数を宣言前に参照すると、
  // var宣言ではエラーにならないが、宣言前でも外側とは別の変数扱い。
  console.log(var変数) // undefined
  var var変数 = '関数スコープ'

  // letやconst宣言ではエラー。
  // let変数 // ReferenceError
  let let変数 = '関数スコープ'
}
関数()