JavaScriptでは、グローバル変数は実際にはwindow
オブジェクトのプロパティです。一方を使用することは、もう一方を使用することと同等です(そして交換可能です)。
グローバル変数の使用は確かに「一般的」であるため、問題はそれが「適切」であるかどうかです。一般に、グローバル変数は任意の関数からアクセスでき、複数の関数が同じ変数の読み取りと書き込みを試みるリスクがあるため、お勧めしません。(これは、JavaScriptだけでなく、あらゆる環境のあらゆるプログラミング言語に当てはまります。)
アプリケーションに固有の名前空間を作成して、この問題を解決します。最も簡単なアプローチは、変数をそのオブジェクトのプロパティとして使用して、一意の名前でグローバルオブジェクトを作成することです。
window.MyLib = {}; // global Object container; don't use var
MyLib.value = 1;
MyLib.increment = function() { MyLib.value++; }
MyLib.show = function() { alert(MyLib.value); }
MyLib.value=6;
MyLib.increment();
MyLib.show(); // alerts 7
別のアプローチは.data()
、関連するDOM要素に変数をアタッチするために使用することです。これはすべての場合に実用的ではありませんが、グローバル名前空間に残さずにグローバルにアクセスできる変数を取得するための良い方法です。