ブラウザのトップレベルでvar宣言するとグローバルオブジェクト

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>ブラウザのトップレベルでvar宣言</title>
</head>
<body>
  <script>
  // ここはトップレベル
  var グローバル = true
  console.log(window.グローバル) // true

  // グローバル変数にならない
  let トップ = true
  const 定数 = true
  function 関数(){ var ローカル = true }
  console.log(window.トップ, window.定数, window.ローカル) // undefined undefined undefined
  
  // function宣言ではグローバルオブジェクトになるが、class宣言では違う
  class クラス{}
  console.log(window.関数 === 関数, window.クラス) // true undefined
  </script>
</body>
</html>