JavaScript

while

 条件構文と並んで重要な構文となるのが「繰り返し」です。これは、必要に応じて決まった処理を何度も繰り返すためのものです。

 繰り返しの中で最もシンプルなのは、「while」という構文でしょう。これは、条件をチェックし、それが正しいかどうかによって繰り返しを続けるかどうかを決めます。書き方は、大きく2通りあります。

while構文の書き方①


while(条件)
	……繰り返す処理……

while構文の書き方②


do
	……繰り返す処理……
while(条件);

 whileは、条件を置く場所によって2つの書き方があります。いずれも、条件が正しい間、繰り返し処理を行い、条件が正しくなくなったら構文を抜けます。

while(条件)

 1つ目の書き方は、最初に while(条件) と言う形で記述するやり方。この場合、繰り返しに入るとまず最初に条件をチェックします。ですから、最初から条件が成立していなければ、繰り返し部分を全く何も実行せずに次へと進んでしまいます。

do~while(条件)

 2つ目の書き方は、繰り返しの最後に while(条件) として条件を記述するやり方。これは、繰り返しに入ると、まずそこにある処理を実行し、そして最後に条件をチェックして繰り返しの最初に戻るかどうかを決定します。ということは、繰り返しに入る前から条件が成立していなかったとしても、必ず1度は処理を実行する事になります。

 この2つの違い(繰り返し部分を、最低でも1度は実行するか、全く実行しない場合もあるか)をよく頭に入れておきましょう。

Sample


var x = 1;
var answer = 0;

while(x <= 100)
	answer = answer + x++;

document.write("合計:" + answer);

 これは、1~100の整数を合計するスクリプトです。ここでは、足していく数値を収める変数 x と、合計を収めていく変数 answer を用意し、 x の値を1ずつ増やしては answer に加算する、と言う事を繰り返しています。

 ここでは、繰り返し実行している処理に以下のような文が書かれていますね。


answer = answer + x++;

  answer+x++ を answer に代入しています。さあ、ここで質問です。 answer がゼロで、 x が 1 だった場合、新しく設定された answer の値はいくつになるでしょうか?「 x++ で x は 2 になるから、 0+2 で 2 になる」と思った方、残念でした。答えは「 1 」です。

 この x++ というのは「 x の値を 1 増やす」と言うものでした。が、これは「 x++ だから x の値は 2 になる」といった単純なものではありません。「 answer + x++ 」のとき、まだ x の値は「 1 」なのです。この x の値が使われた後で x の値は 1 増やされます。つまり「 answer + x++ 」は、「 answer + x を計算した後、 x を 1 増やす」という働きをすることになります。

 ところが、「 answer + ++x 」だと、話が逆になります。今度は「 x の値を 1 増やしてから answer + x を計算する」事になるのです。 ++ は、変数の前に付けるか後につけるかで働きが違うのです。ここでしっかりと理解しておきましょう。