こんにちは、エンジニアの若月です。
突然ですが、JavaScriptのbreakって使ってますか?
JavaScriptでは、繰り返し文の途中でループ処理から抜け出すためにbreakを使います。
また、多重ループでの使い方やswitch文でのフォールスルーも覚えれば、さらに効率的なプログラムを書くことができます。
この記事では、breakについて
・breakとは
・breakの使い方
・continueとの違い
などの基本的な内容をはじめ、
・多重ループでラベルへ抜ける方法
・breakの使用上の注意点
などの応用的な使い方まで、わかりやすく解説していきます!
breakとは
JavaScriptでbreakを使うと、繰り返し文(for 文、for…in 文、for…of 文、do…while 文、while 文、switch文)のループ処理から抜け出すことができます。
breakの使い方
for文でbreakを使う方法
for文でbreakを使う例です。
for (var i = 0; i < 6; i++) {
var value = i*10;
if (value == 30) {
break;
}
console.log(value);
}
ブラウザのコンソールなどで試してみましょう。以下のように表示されるはずです。
>0 >10 >20
これは、valueが1*10、2*10…と増えていって、30になったらループ処理を抜け出すというような処理になります。
for文の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。
while文でbreakを使う方法
while文においても、for文と同様にループ処理を抜け出すときにbreakを使います。
var i = 0;
while (i < 100) {
if (i > 50) {
break;
}
i = i + 1;
}
console.log(i + '回ループされました');
実行結果:
> "51回ループされました"
while文の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。
switch文でbreakを使う方法
繰り返し文以外でも、breakを使う文があります。
それがswitch文です。
switch文は、条件によって処理を切り分ける際に使われますが、選択した処理だけ実行して、他の処理は実行されないようにするためにbreakを使います。
var signal = 'red';
// 信号の色
switch (signal){
case 'red':
console.log("止まれ");
break;
case 'blue':
console.log("進め");
break;
case 'yellow':
console.log("注意");
break;
}
実行結果:
> "止まれ"
このように、指定した「red」の場合の処理だけを行い、そのあとの「blue」や「yellow」の場合の処理を省略するときに使われます。
switch文の使い方については、こちらで詳しく解説していますので、ぜひ参考にしてください。
多重ループで「ラベル」へ抜ける方法
また多重ループ(for文のなかにfor文を入れ子にする)を使用するときに、「ラベル」をつけることで、ラベル先へ抜けることができます。
デフォルトでは、一番近いfor文のループ処理から抜けるようになっています。
以下のサンプルコードをみてみましょう。
for(var i = 0; i < 2; i++) {
console.log("外のループ:" + (i + 1) + '回目\n');
for (var j = 0; j < 100; j++) {
if (j == 3) {
break;
}
console.log("中のループ:" + (j + 1) + '回目');
}
console.log('\n');
}
実行結果:
> "外のループ:1回目" > "中のループ:1回目" > "中のループ:2回目" > "中のループ:3回目" > > "外のループ:2回目" > "中のループ:1回目" > "中のループ:2回目" > "中のループ:3回目" >
以上のように、外側のループは引き続き繰り返されます。
それでは、ラベルをつけて外のループから抜けるようにbreakを書いてみましょう。
// for文にouter(外)というラベルをつける
outer:
for(var i = 0; i < 2; i++) {
console.log("外のループ:" + (i + 1) + '回目');
for (var j = 0; j < 100; j++) {
if (j == 3) {
break outer;
}
console.log("中のループ:" + (j + 1) + '回目');
}
console.log('\n');
}
実行結果:
> "外のループ:1回目" > "中のループ:1回目" > "中のループ:2回目" > "中のループ:3回目"
このように、jの値が3になると、外側のループ処理が終了し、二回目以降は実行されていないことがわかります。
continueとの違い
次に、同様に繰り返し文の中で使われるcontinue文との違いについて解説していきます。
continue文は、ループから途中で抜けるのではなく、その回の処理をスキップするときに使用します。
先ほどのサンプルコードのbreakを、continueに変えてみましょう。
for (var i = 0; i < 6; i++) {
var value = i*10;
if (value == 30) {
continue;
}
console.log(value);
}
実行結果:
>0 >10 >20 >40 >50
breakのときは、30が出力されたあとはループ処理が終了していましたが、continueの場合は30のときだけスキップして最後までループ処理が行われているのがわかります。
似たようなところで使いますが処理の結果は大きく違うので、違いを覚えておきましょう!
breakの注意点
forEach内では使えない
JavaScriptには、for文よりも簡単に配列をループするforEachという関数が用意されています。
for文と似ていますが、この関数内ではbreakを使うことができません。
配列の繰り返しの中で途中でループから抜けるようにしたい場合は、someメソッドのような配列のテストメソッドを代わりに使いましょう。
また、someメソッドなどを使う場合は、breakではなく、return true;として値を返すことでメソッドの処理が終了します。
array = [1,5,7, 9, 12,16,23];
array.some( function(value) {
if (value > 10) {
return true;
}
lastValue = value;
});
console.log(lastValue);
実行結果:
>9
ただし、実践的な開発では問題点もあり、for文で書くのが好ましいようです。
あくまで「for文を使わない際にはこういった書き方をする」という風に覚えておきましょう。
forEachについては、こちらで詳しく解説していますので、ぜひ参考にしてください。
someについては、こちらで詳しく解説していますので、ぜひ参考にしてください。
switch文でのフォールスルー
switch文の中では、あえてbreakを省略する場合があります。
var signal = 'yellow';
// 信号の色
switch (signal){
case 'yellow':
console.log("注意して");
case 'red':
console.log("止まれ");
break;
case 'blue':
console.log("進め");
break;
}
実行結果:
> "注意して" > "止まれ"
このように、switch文においては下のcase文を続けて実行させるために、あえてbreakを書かないこともあります。
ただしこれも、あまり推奨される書き方ではないため、使用の際には注意しましょう。
まとめ
今回の記事では、breakの基本からラベルを指定した応用的な使い方、また使用上の注意点などを解説しました。
基本的な使い方だけでなく、ラベルなどの応用的なbreakの使い方を知っておくと、より効率的なコーディングに役立つと思います。
JavaScriptの様々な文法のなかで、breakはとても重要な役割を果たしています。
breakについてわからないことがあったら、ぜひこの記事を参考にしてみてください!






