JavaScript ループ文復習
出典: フリー教科書『ウィキブックス(Wikibooks)』
- JavaScript > 入門 制御の流れ
目次 |
[編集] loop関連文
[編集] for文
配列の取出しなどで利用するloop文だが
for( 式1; 式2; 式3 ){}
上の式1、式2、式3にそれぞれは、すべて式であれば何であれ入れて良い。
ただし、for文は次の様に動作している。
- 式1は最初のループを開始する前に動作する
- 式2はループを開始する前ごとに動作して、出てきた値の真偽を評価する。結果がfalseならループを終了
- 式3はループが終了するごとに実行される。
このため、これ合う限りは、文法的には正しく動く。
例えば、次の様に何も条件や宣言を入れなければ書けば脱出の条件が無いため無限ループとなる。
for(;;){}
また、for文の式1と式3は、カンマ(,)で区切る事で複数の式を入れて良い。
for( var i=0, j=0; i>=7; i++, j++ ) 処理;
[編集] 余談:ループ変数i
for文で度々お世話になる変数「i」だが、これは索引(index)のアルファベットの頭文字から取ったもので、慣習的にリストからのデータ取り出しに利用される変数名と決まっている。 ちなみに、ループを2重、3重に重ねる場合、アルファベットを順番に辿ってi,j,k...と使っていく事になっている。後々これも紹介することになりますが…。
[編集] break, continue
for等のループ文を使用していると、ループの処理が終了しないときに途中で脱出を行いたい事がある。 このときに使用するのがbreak文で
for(;;){
if(/*脱出条件式*/)
break;
}
という風に、使用する。
逆に、continue文はループが終了しないうちに、ループの最初に戻ることが出来る。
[編集] ラベルの使用
for文からの脱出はbreakを使えば出来るが、これは直接上のfor文からの脱出であり、2重、3重のループになったfor文に関してはbreak文だけでは機能不足である。 これを解決するために、JavaScriptでは、ループにラベルを付けて、脱出するループ゚を指定することが出来る。
loop1:
for( var i=0; j<7; i++ ){
loop2:
for( var j=0; j<7; j++ )
break loop1;
}
上記のプロ倉実を見てもらえばわかるが、まずforやwhile等のループ文の先頭にループの名前を付けてやり、その上でbreakやcontinue文で脱出するときのループを指定してやれば良い。
[編集] for-in文
for-in文はfor文の拡張で、特に連想配列からのデータの取出し等で効果を発揮する。
var history ={
'武田':'甲斐',
'上杉':'丹波',
'織田':'尾張',
'今川':'三河',
'伊達':'奥州'
};
for ( var i in history )
document.write( i + ' : ' + history[i] + '<br />' );