JavaScriptのbreakの使い方について書いています。
breakの使い方について解説した後に、下記の内容について説明しています。
・while文の繰り返しで使う
・breakはforEachで使えるのか?
・breakとcontinueの違いは?
それぞれ、サンプルコードを載せて解説しています。
breakの使い方
breakを使うと、ループの途中で抜けることができます。
例えば、下記のように使えます。
for (let i = 0; i < 10; i++) {
if(i === 5) {
break
}
console.log(i)
}
最初にfor文を使っています、ループを10回繰り返すようにしてみました。
初期値の変数i
が0から始まって、9までカウントアップされます。
変数i
が「5」だったときにbreak
を呼び出しています。
こうすると、変数i
が「5」のときにループを抜けて、処理が終わります。
プログラムを実行してみると、下記のように出力されました。
0
1
2
3
4
変数i
が「5」になったらループを抜けて、処理を終了したことが確認できました。
breakをラベルで使う
ラベルを指定して、breakを使うこともできます。
例えば、下記のように使います。
testBlock: {
console.log('hello1')
console.log('hello2')
break testBlock
console.log('hello3')
console.log('hello4')
}
testBlock
というラベルをつけて、処理を波括弧でくくりました。
その中でconsole.log
を使って、文字列を出力しています。
「hello1
」と「hello2
」を出力した後に、breakを使っています。
「break testBlock
」としているので、testBlock
ラベルの処理から抜けます。
そのため、実行結果は下記のようになりました。
hello1
hello2
文字列をふたつ出力した後に、処理を抜けたことが確認できました。
breakをwhileで使う
while文で繰り返し処理を行なっている箇所でも、breakを使うことができます。
let i = 0;
while (i < 10){
if (i === 4) {
break
}
console.log(`hello${i}`)
i++
}
最初に変数i
に0を代入しています。
その次にwhile文を使っています、変数i
が9になるまでループするような条件にしました。
ループの中で変数i
が4だったら、breakを使うようにしています。
そのため、このプログラムでは4回処理をして、処理を抜けるようになります。
判定の後にconsole.log
での値の出力と、変数i
のカウントアップの処理をしています。
プログラムを実行すると、下記のように出力されます。
hello0
hello1
hello2
hello3
0〜3の4回出力されて、breakで抜けたことが確認できました。
breakはforEachで使える?
breakはforEachで使うことができません。
このように、forEachでbreakを使おうとするとエラーになります。
const fruits = ['apple', 'banana', 'lemon', 'orange']
fruits.forEach((fruit) => {
if (fruit == 'lemon') {
break
}
})
出力されるエラーは下記です。SyntaxError
が発生しました。
Uncaught SyntaxError: Illegal break statement
このときには、for...of
を使うことを検討してみてください。
下記のようにfor...of
でbreakを使ったときには、エラーは発生しません。
const fruits = ['apple', 'banana', 'lemon', 'orange']
for(fruit of fruits) {
if (fruit === 'lemon') {
break
}
console.log(fruit)
}
fruits
配列を果物名を並べて作っています。
果物名がlemon
だったときにbreakするので、出力されるのは下記のみです。
apple
banana
breakとcontinueの違いは?
breakとcontinueの違いについてです。
breakは処理を抜けて、後続の処理に移りますが、continueは処理ブロックの先頭に戻るだけです。
breakのサンプルコード
例えば、breakを使った下記の処理です。
const fruits = ['apple', 'orange', 'grape', 'banana', 'peach']
for (const fruit of fruits) {
if (fruit === 'grape') {
break
}
console.log(fruit)
}
fruits
変数を5つの果物名で、配列として作成しました。
次にfor...of
を使ってループしています。
fruit
変数に代入される文字列が「grape
」だったときに、処理を抜けるようにbreakを書きました。
最初の2回は出力されて、3回目のループで処理を抜けます。
そのため、このプログラムの出力結果は下記になります。
apple
orange
continueのサンプルコード
続けて、同じ処理でbreakを使っていた箇所をcontinueに変えました。
const fruits = ['apple', 'orange', 'grape', 'banana', 'peach']
for (const fruit of fruits) {
if (fruit === 'grape') {
continue
}
console.log(fruit)
}
こうすると、処理を抜けることなく、ループの先頭に戻るだけです。
まず、最初に「apple
」・「orange
」と出力されます。
その後は「grape
」なので、if文でtrueになります。
そして、continueで後続の処理をスキップし、ループの先頭に戻ります。
次の要素「banana
」がfruit
変数に代入され、同じようにループ処理が続きます。
結果、「grape
」の時だけスキップされるので、出力は下記のようになります。
apple
orange
banana
peach
このようにbreakは処理を抜けますが、continueは後続処理をスキップして先頭に戻ります。
終わりに
今回はJavaScriptのbreakの使い方について書きました。
まとめると、下記のようになります。
・breakをラベルで使うと、呼んだところで抜ける
・while文の繰り返し処理でも使うことができる
・forEachでは使うことができない。`for…of`で代用できないか検討する
・breakとcontinueは動作が異なるので気をつける
コメント