0
0

More than 1 year has passed since last update.

JavaScript ループ 「break」「continue」

Posted at

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」からの出力になってしまいますけどね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0