グローバル変数とグローバルプロパティ
まず、グローバル変数とは関数の外で定義した変数のこと。
var hoge = "huga";
ブラウザ環境ではグローバルオブジェクトのwindow
に変数として登録される。
window
は省略できるので、この2行はどちらも同じ結果になる。
console.log(hoge);
console.log(window.hoge);
こんどはグローバルプロパティ。
varなしで宣言するとグローバルプロパティになる。
あえて使うことは少ないと思うが、関数内で宣言してもグローバル汚染するので注意が必要。
hoge = "hoge";
グローバル変数との違いはdeleteで削除可能なこと。
delete hoge;
最近のブラウザではuse strict
を宣言するとグローバルプロパティが使えないようである。
"use strict";
ただ、宣言の行ではエラーにならずアクセスしたタイミングでReferenceErrorにようだ(chromeでしか試してないが)。
Uncaught ReferenceError: hoge is not defined