JavaScriptでループする意味のコードを記述するとき
「for文」か「while文」を使用するかと思います。
for文コード
for(let i=0;i<5;i++){
document.write(i);
}
出力
01234
while文コード
let i=0;
while(i<5){
document.write(i);
i++;
}
出力
01234
上記のfor文とwhile文は同じ意味です。
この2の文に共通して使える「break」、「continue」という2つの命令があります。
簡単にいうと
「break」は、その時点で強制的にループを抜ける
「continue」は、後の処理をせずにループする
という意味です。どういうことかというと、
for文「break」コード
for(let i=0;i<5;i++){
if(i===3)break;
document.write(i);
}
出力
012
「document.write(i);」の前に、「if(i===3)break;」を記述することによって、
「もしiが3になったら、強制的にループを抜ける」
という意味になりブラウザへの出力は「3」の時点でループが停止した「012」になり、
for文「continue」コード
for(let i=0;i<5;i++){
if(i===3)continue;
document.write(i);
}
出力
0124
「document.write(i);」の前に、「if(i===3)continue;」を記述することによって、
「もしもiが3の時だけ、continueから後の処理を飛ばしてループを続行する」
という意味になりブラウザへの出力は「3」を飛ばした「0124」になるわけです。
ただこの「continue」は注意が必要で、
while文コード
let i=0;
while(i<5){
if(i===3)continue;
document.write(i);
i++;
}
出力
無限ルーーーーープ!
このように記述をしてしまうと、コードは上から順に読み込んでいくので、
「0」「1」「2」までは問題なくループし、
「3」の時のループでは「continue」が先に読み込まれて、
「i++;」により「i」が1増える前に次のループに行ってしまうので、
どれだけループしても一生「i」は「3」のままということになってしまいます。
while文コード
let i=0;
while(i<5){
i++;
if(i===3)continue;
document.write(i);
}
出力
1245
このように命令文の順番を変えると、無限ループではなくなりました。
命令の最初に「i++;」があることによって
「0」からの出力ではなく「1」からの出力になってしまいますけどね。