暗黙のグローバル

JavaScriptには、暗黙のグローバルという概念がある。
そのため、意図せずにグローバル変数を作成してしまい、それが問題となる場合がある。
意図しないグローバル変数を作成してしまう危険性があるのは、下記2つの場合。

  1. 宣言しない変数を使用した場合
  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はローカル変数である。