javascript var文は必須!?

notoです。

javascriptの変数宣言で、「var」ってつけますが、var文は省略しても問題はありません。 じゃあなんでつけるのか。と思い調べてみました。

さっそくサンプルです。

1
2
3
4
5
6
7
8
9
scope = 'これはグローバル変数です。';

function getLocalValue(){
    scope = 'これはローカル変数です。';
    return scope;
}

document.writeln(getLocalValue());
document.writeln(scope);

さてこの結果はどうなるかというと、 「これはローカル変数です。」「これはグローバル変数です。」と表示されます。

というのは嘘で、「これはローカル変数です。」「これはローカル変数です。」と表示されます。 グローバル変数scopeがgetLocalValue()内で上書きされてしまいます。

つまり、 javascriptでは、var命令なしの変数宣言は、すべてグローバル変数とみなされてしまいます。

javascriptでは変数宣言にvar命令で行わないと、バグの元になってしまうので気をつけましょうということです。

ブラウザ上でさっくりjavascriptやHTML5のコードを試してみたい場合、chromeのJustEditというエクステンションがオススメです。

参考

JavaScript本格入門 ~モダンスタイルによる基礎からAjax・jQueryまで

Comments