[JavaScript]varで宣言しない変数はグローバルスコーププロパティになる

関数スコープ内でvarで宣言しない変数に値を代入すると、グローバルスコープのプロパティとして定義されます。
var宣言しない場合

1つめのhogeではmoge関数内で値代入したmageがグローバルスコープに定義されています(変数ではなくプロパティに追加されます。
2つめのfooではboo関数内でvar宣言&値代入したbarが関数内スコープとして定義されているので、グローバルスコープからはアクセスできていません。

2つめの動作が当たり前な気がするのですが、そうではないので要注意です。というか、変数を使用する場合はvarで宣言するようにしないと危険と言えます。

ちなみに”use strict”するとvar宣言無しの変数は使用できなくなります。この方が堅牢性的にはよろしいと思います。
var宣言しない場合_useStrict

コメントを残す