ブラウザのトップレベルスコープでのthisはグローバルオブジェクト

thisキーワードは場面ごとに違うオブジェクトを指す。ブラウザのトップレベルスコープはグローバルスコープなので、そこでのthisはグローバルオブジェクト(windowオブジェクト)を指す。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>ブラウザのトップレベルスコープでのthis</title>
  <script>
    'use strict'
    // ブラウザのトップレベルスコープはグローバルスコープ。
    // グローバルスコープでのthisはグローバルオブジェクトを指す。
    // ブラウザではwindowオブジェクトのこと。
    console.log(this === window) // true

    // グローバルスコープでvarで宣言する変数はグローバル変数。
    // グローバル変数はグローバルオブジェクトのプロパティに格納される。
    var グローバル = 'global'
    console.log(this.グローバル) // global
    // グローバル関数もグローバルオブジェクトのプロパティに格納されている。
    console.log(this.setTimeout === setTimeout) // true

    // letやconstでの宣言はローカル変数。
    let ローカル = 'local'
    console.log(this.ローカル) // undefined
  </script>
</head>
<body>
</body>
</html>

なお、Node.jsではトップレベルthisはグローバルオブジェクトではない