window オブジェクトはブラウザ環境でのみ存在するグローバルオブジェクトです。Node.js などのサーバーサイド環境では存在しません。
グローバルスコープの変数や関数は実際には window オブジェクトのプロパティとして定義される
var で宣言した変数は window のプロパティになる(let/const は除く)
関数宣言も window のプロパティになる
var と let/const の決定的な違いは window オブジェクトに入るか入らないか。
var foo = 123; console.log(window.foo); // 123 let bar = 456; const baz = 789; console.log(window.bar); // undefined console.log(window.baz); // undefined function globalFunc() {} console.log(window.globalFunc); // function globalFunc() {}
window というグローバル変数を汚したくない場合、let などを使うといいですね。