処理を2重で繰り返す場合、以下のようなプログラムを書くだろう。
var x , y ; for( x = 0 ; x < 3 ; x++ ) { for( y = 0 ; y < 2 ; y++ ) { document.write( "A" ) ; } }
でも、大きなプログラムを書いていると、変数名をつけるのに悩む場合もある。
var x ; for( x = 0 ; x < 3 ; x++ ) { for( x = 0 ; x < 2 ; x++ ) { document.write( "A" ) ; } }
かといって、このプログラムは、3✕2回のループにはならない。
同じ名前でも、別な変数を作ることができる。
for( var x = 0 ; x < 3 ; x++ ) { : }
for文のカッコの先頭(初期化式)の部分には、変数宣言を書いてもいい。この変数は、for 文が終わるまでの間有効となる。
forの初期化式の時点で x が作られ、for 文が終わると消える。
つまり、変数が使える範囲(スコープ)は、for文の中だけ。寿命はfor文に入って抜けるまで。
これを使うと、前述のプログラムは、
for( var x = 0 ; x < 3 ; x++ ) { document.write( "#A x=" + x + "<br />\n" ) ; for( var x = 0 ; x < 2 ; x++ ) { document.write( "##B x=" + x + "<br />\n" } document.write( "#C x=" + x + "<br />\n"\n" ) ; } 実行結果 #A x=0 ##B x=0 ##B x=1 #C x=0 ←内側のforが終わり、内側のxは消えて、外側のxが見える #A x=1 ##B x=0 ##B x=1 #C x=1 #A x=2 ##B x=0 ##B x=1 #C x=2