- Home ›
- JavaScript入門 ›
- 繰り返し処理 ›
- HERE
for文
for文は繰り返し処理の1つで指定した回数だけ処理を繰り返す時に使われます。書式は次の通りです。
for (初期化式; 条件式; 変化式) 実行する文;
for (初期化式; 条件式; 変化式){ 実行する文1; 実行する文2; ... }
for文はまず初期化式を一度実行します。ここでは変数の初期化などを行います。次に条件式を一度評価します。評価した結果としてtrueが返された場合にはfor文の次の文を実行します。ブロックを使用することで複数の文を実行することも可能です(ブロックを使う場合は「{」から「}」の間に実行したい文を記述します)。そして変化式を使って条件を変化させます。ここまでが1回目の繰り返し処理となります。
そして再度先頭に戻ります。2回目からは初期化式は実行されず条件式を評価します。評価した結果がtrueなら再度次の文を実行し、falseだった場合にはfor文を終了します。
このようにfor文は初期化を一度だけ行い、その後は変化式を使って条件を変化させながら条件式がtrueを返す間繰り返し文を実行します。
ではまず条件式だけを使ってfor文を記述してみます。次の例を見て下さい。
var sum = 0; var count = 0; for (; count < 2;){ sum += 2; count++; } alert(sum);
この例ではfor文の条件式は「count < 2」です。つまり変数countに格納されている値が2よりも小さい時に条件式はtrueとなります。変化式が記載されていないので、変数countの値を何らかの形で変化させなければ無限に繰り返しを行ってしまいますので、ブロックの中で変数countの値を増加させています。
この例では次のように文が実行されていきます。
1)sum = 0; 2)count = 0; 3)条件式を評価。countは2よりも小さいので繰り返しを実行 4)sum += 2; 5)count++; 6)条件式を評価。countは2よりも小さいので繰り返しを実行 7)sum += 2; 8)count++; 9)条件式を評価。countは2よりも小さくないので繰り返しを終了 10)alert(sum);
for文ではまず最初に条件式が評価されます。もしも条件式がいきなりfalseとなった場合には繰り返し処理は実行されません。条件式がtrueだった場合にはfor文のブロック内に記述された文を順に実行していきます。
ブロック内の最後の文を実行したら1回目の繰り返しが終了です。そしてfor文の最初に戻り改めて条件式を評価します。trueなら再度ブロック内の文を実行し、falseだった場合にはfor文の次の文へ処理が移ります。
for文はこのように条件式の評価とブロック内の処理の実行を繰り返していきます。
for文では条件式の他に初期化式と変化式を記述することができます。
初期化式に記述した式はfor文で最初に条件式が評価される前に一度だけ実行されます。主にfor文の条件式で使用される変数の宣言と初期化に利用されることが多いです。
先ほどの例では変数countの宣言と初期化をfor文の前で行っていましたが、変数への初期値の代入をfor文の初期化式で記述すると次のようになります。
var sum = 0;
var count;
for (count = 0; count < 2;){
sum += 2;
count++;
}
alert(sum);
通常初期化式に記述する式は、代入演算子を使い変数に対して値を代入するような式を記述します。
また初期化式にはvar文も記述することができます。その為、次のように変数の宣言と初期値の設定を初期化式で記述することもできます。(var文については「変数の宣言(var文)」を参照して下さい)。
var sum = 0;
for (var count = 0; count < 2;){
sum += 2;
count++;
}
alert(sum);
変化式は繰り返し処理が一度終わるたびに実行される式を記述します。主に条件式で使われている変数の値を変化させるための式を記述します。
先ほどの例では変数countの値を1つ増加させる文を繰り返し処理の中のブロック内に記述していましたが、変化式をで記述すると次のようになります。
var sum = 0;
for (var count = 0; count < 2; count++){
sum += 2;
}
alert(sum);
これは最初に記載したサンプルとまったく同じ動きをします。ただこのように初期化式と変化式を記述すると、このfor文で使われる条件式の変数が何であり、繰り返し処理が1回実行されるために条件がどのように変化するのかが一目瞭然となります。
for文はある一定の回数だけ繰り返し処理を実行する場合によく利用されます。例えばn回繰り返しを実行したい場合は次のように記述します。
for (var i = 0; i < n; i++){ /* 実行する文 */ }
例えば3回繰り返す時は「n」のところに3と記述し、10回繰り返し場合は「n」のところに10と記述します。10回の場合で言えば変数「i」の値は0から9の間は繰り返しを実行し、10になった時には条件式がfalseとなりfor文が終了します。結果的に繰り返しは10回行われます。これは次のように記述しても同じです。
for (var i = 1; i <= n; i++){ /* 実行する文 */ }
この場合は変数「i」が1から10の間は繰り返しを実行し、11になった時に終了します。この場合でも繰り返しは10回実行されます。変数の値を条件式での評価だけではなく繰り返し処理の中で使用したい場合などには回数だけではなく、数値を何から何まで変化させて回数を計算するのかも考えなくてはなりません。
では簡単なサンプルで試してみます。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>JavaScript テスト</title> </head> <body> <script type="text/javascript" src="./js/script2_1.js"> </script> </body> </html>
var sum = 0; for (var i = 0; i < 10; i++){ sum += 2; } document.write("<p>2を10回加えた合計は" + sum + "</p>");
上記を実際にブラウザ見てみると次のように表示されます。
( Written by Tatsuo Ikura )