グローバル変数に依存しているJavaScript


JavaScriptの最大の欠点は、グローバル変数に依存していることだと言われている。グローバル変数には、すべてのスコープからアクセスできるため、グローバル変数に依存しているプログラムは、挙動が不安定になってしまう。

グローバル変数に依存しているプログラムでは、プログラムからサブルーチンを呼び出し実行することを困難にしてしまう。複数のサブルーチンが同じグローバル変数を共有している場合、発見するのが難しいバグになってしまう。

グローバル変数は多くの言語で利用できるが、JavaScriptの問題は、グローバル変数を使わなければプログラムが書けないことにある。JavaScriptでグローバル変数を定義する方法は次の3つになる。

1: var count = 0;

2: window.count = 0;

3: count = 0;

1の方法は、var文を関数の外に記述する。2の方法は、グローバルオブジェクトに直接プロパティを追加する。3の方法は、変数名を記述する。

定義し忘れた変数をグローバル変数として扱うというJavaScriptの仕様では、発見するのが難しいバグを作り出してしまう危険がある。

Cに由来する言語では、ブロック(中括弧で囲まれた処理ブロック)はスコープを生じるため、ブロック内で定義された変数には、そのブロック外からはアクセスできない。JavaScriptの場合、ブロックのシンタックスは有効にもかかわらず、スコープは無効になる。このように、JavaScriptのブロック内で定義された変数には、ブロックの外側からでもアクセスできる。通常、変数は最初に利用されるタイミングで定義するのが良いが、JavaScriptの場合は、すべての変数を関数の先頭で定義するほうが良い。

 


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です