暗黙のグローバル
JavaScriptには、暗黙のグローバルという概念がある。
そのため、意図せずにグローバル変数を作成してしまい、それが問題となる場合がある。
意図しないグローバル変数を作成してしまう危険性があるのは、下記2つの場合。
- 宣言しない変数を使用した場合
- varを使用した宣言で代入連鎖を行った場合
1つ目の例を示す。
function samp(x, y){ //暗黙のグローバル変数の使用 sum = x + y; return sum; } //sumがグローバル変数なので、他のソースからsumにアクセスされる危険がある。
2つ目の例を示す。
//bがグローバル変数になってしまう var a=b=0
右から左に評価が行われる。
つまり、b=0の評価がはじめに行われ、そのタイミングでbがグローバル変数とみなされる。
次にvar a = (b=0)の評価が行われるが、aにはvar宣言があるので、aはローカル変数である。