2014-10-11 2014-10-18 2014-10-18 for文 JavaScript forとは while文は、繰り返しの継続条件のみを指定する単純な構文に対し、for文は繰り返すたびに変数の値を増減させることができます この変数を「カウンタ変数」と呼びます 何回目の繰り返し処理を実行しているのか、という情報が必要なときなどにはfor文を用いる while(初期化式 ; 継続条件式 ; 増減式) { 繰り返す処理 } 式の種類説明実行タイミング 初期化式 カウンタ変数を初期化する代入式 最初の1回だけ実行される 継続条件式 繰り返しを継続する条件式 1回分の繰り返し処理の 最初に毎回実行される 増減式 カウンタ変数の値を 増減させる計算式 1回分の繰り返し処理の 最後に毎回実行される 《for文の利用》 カウンタ変数名は「i」(indexの意)とすることが慣例です <!DOCTYPE html> <htmllang="ja"> <head> <metacharset="utf-8"> <title>for文の利用</title> <script> for(var i = 1 ; i <= 5 ; i++){ console.log(i + "回目"); } </script> </head> <body> </body> </html> 《実行結果》 変数 i に1が代入される(初期化式) i が5以下かどうか検証される(継続条件式) i の値がコンソールに表示される i に1加算される(増減式) 継続条件式の結果がfalseになるまで(2~4)を繰り返す for文の応用例 カウントダウン for (var i = 5 ; i >= 1 ; i--) { } 《配列とfor文》 配列のインデックスをカウンタ変数で指定することで、配列の要素に対して1つずつ順に処理を実行できます <!DOCTYPE html> <htmllang="ja"> <head> <metacharset="utf-8"> <title>配列とfor文</title> <script> varnumber = [10, 20, 30]; for(var i = 0 ; i < number.length ; i++){ console.log(number[i]); } </script> </head> <body> </body> </html> 《実行結果》 number.lengthは、配列numberの要素数を表します よって、for文の継続条件は「i の値が0から3未満まで」になります 配列numberのインデックスは先頭から順に、0、1、2ですから、ちょうどカウンタ変数の値がインデックスと対応します for-in文 任意の文字列をキーとする連想配列は、通常のfor文では扱うことができません 連想配列の要素を1つずつ処理する場合、for文ではなく「for-in文」を利用します for(var 変数名 in 連想配列名) { 連想配列名 [ 変数名 ] とすることで各要素を参照できる } for-in文は、連想配列の要素数分繰り返しを実行します 繰り返すたびに変数の連想配列のキーのうちいずれか1つが代入されます 《連想配列とfor-in文》 <!DOCTYPE html> <htmllang="ja"> <head> <metacharset="utf-8"> <title>連想配列とfor-in文</title> <script> var favorites = { food : 'カレーライス', color : '青', number : 7 }; for(var key in favorites){ console.log(key + ' : ' + favorites[key]); } </script> </head> <body> </body> </html> 《実行結果》 連想配列favorites の要素数が3つなので、for-in文の繰り返し回数は3回です 1回目の繰り返し処理では、変数key の中に「food」が代入されます 2回目は「color」、3回目は「number」というように、1回分の繰り返しごとにキーが1つずつ取得されます キーが取得される順番は保証されないため、配列の先頭要素から順序どおりに処理をしたい場合には、for-in文は適しません。 while文に「カウント制限」を付け加えたものが、for文 配列の要素を1つずつ処理する場合は、for文を使う 連想配列の要素を1つずつ処理する場合は、for-in文を使う