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>