break文

広告

繰り返し処理は条件式が満たされている間は繰り返しを実行しますがbreak文を使用すると強制的に繰り返し処理を終了させることができます。書式は次の通りです。

break;

break文が実行されると、break文が記述されている最も内側の繰り返し処理の文が終了し次の処理へ移ります。終了の対象となる文はfor文、while文、do..while文、for..in文、switch文です。(switch文は別のページで解説します)。

簡単なサンプルを例に考えてみます。

var num = 1;

for (var i = 0; i < 10; i++){
  num *= 2;
}

上記ではfor文を使って10回繰り返しをします。そして1回繰り返しが行われるたびに変数「num」の値が2倍されていきます。

ではこのサンプルを変数「num」の値が100を越えたら繰り返しの途中であっても繰り返しを終了させるように変更してみます。まずは条件式を次のように変更してみます。

var num = 1;

for (var i = 0; i < 10 && num < 100; i++){
  num *= 2;
}

変数「i」が10よりも小さく、且つ変数「num」が100よりも小さい場合に繰り返し処理が継続されるようにしました。これでも問題ありません。これと同じことをbreak文を使用することで次のように記述することができます。

var num = 1;

for (var i = 0; i < 10; i++){
  num *= 2;

  if (num >= 100){
    break;
  }
}

繰り返し処理の条件式では単にカウント用の変数が10よりも小さいかどうかを判別しています。それとは別に繰り返し処理のブロックの中でif文を使って変数「num」の値をチェックしています。そして変数「num」の値が100以上となっていたらbreak文を実行することで繰り返し処理を終了させています。

この時、break文が含まれる最も内側のブロックはif文のブロックですが、break文によって終了する文は繰り返し処理とswitch文だけとなっています。その為、今回のサンプルでbreak文によって処理が終了するのはfor文となります。

条件式によって繰り返し処理の継続条件を定義してもいいのですが、break文は複雑な条件式と組み合わせて使用することが可能でありbreak文を使った方が簡潔に記述できる場合があります。

サンプルコード

では簡単なサンプルで試してみます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<title>JavaScript テスト</title>
</head>
<body>

<script type="text/javascript" src="./js/script9_1.js">
</script>

</body>
</html>
var num = 1;

document.write("<p>");

for (var i = 0; i < 10; i++){
  num *= 2;
  document.write("i = " + i + ", num = " + num + "<br />");

  if (num >= 100){
    break;
  }
}

document.write("</p>");

上記を実際にブラウザ見てみると次のように表示されます。

p9-1.png

( Written by Tatsuo Ikura )