Two hats

Design + technologies

JavaScriptのグローバル変数


JavaScriptで「グローバル変数を使わないほうが良い」と言っている記事を見かけたりするので、調べてみました。

グローバル変数を使用しない方がよい理由とは、グローバル変数はウェブページやJavaScriptアプリ内にあるすべてのコードで共有できてしまう点にあるようです。
よって、サードパーティ製のライブラリやウィジットなどを導入したときに、変数が重なってしまい問題を起こす可能性があるということのようです。

できるだけ使わないようにコーディングするにはどうしたらいいかまだ把握できていませんが、気をつけねばならないことは「暗黙のグローバル」という概念があり、意図していないところでグローバル変数を作ってしまうことがあるようです。それはvarを使わずに変数を定義することです。


var g_string = "global"; //グローバル変数

(function(){
l_string = "local"; //ローカル変数のつもり?
console.log(l_string); //結果:local
})();

console.log(g_string); //結果:global
console.log(l_string); //結果:local→ローカル変数でない><
JavaScriptではvarを使わずに変数を作ることができますが、その場合は関数内で宣言したとしてもグローバル変数になってしまうようです。上の"l_string"はローカル変数のつもりで書いたとしても、実際は関数の外側でも参照できてしまっています。

このようにvarを使わずに宣言すると、闇雲にグローバル変数を作ってしまうことになるので避けましょうということのようです。