JavaScript

【JavaScript】switch文で後続の処理も実行されてしまう

本記事では、switch文で後続の処理も実行されてしまう時の原因と対処法について解説しています。

JavaScriptの学習におすすめ参考書
改訂3版JavaScript本格入門 ~モダンスタイルによる基礎から現場での応用まで

本書情報
出版社技術評論社
著者山田 祥寛
発売日2023/2/13
ページ数624ページ
レビュー
(Amazon)
(4件)
先輩くん
先輩くん
10万部突破したJavaScriptの本が大幅増補改訂し7年ぶりに発売されたよ!
後輩ちゃん
後輩ちゃん
最新の基本文法から、開発に欠かせない応用トピックまで学ぶことが出来るよ!

綺麗なコードが書けるようになる!
リーダブルコード-より良いコードを書くためのシンプルで実践的なテクニック

本書情報
出版社オライリージャパン
著者Dustin Boswell / Trevor Foucher
発売日2012/6/23
ページ数260ページ
レビュー
(Amazon)
(620件)
先輩くん
先輩くん
より良いコードを書きたい人におすすめの本だよ!
後輩ちゃん
後輩ちゃん
10以上前の書籍ですが、内容は今でも役に立つものばかりです!

switch文で後続の処理も実行されてしまう時の原因と対処法

switch文で後続の処理も実行されてしまう時の原因は、最後にセットする「break;」の記述漏れだと思われます。

switch文は処理が終わるタイミングをbreak;に設定しているため、caseブロック内の処理が全て終わってもbreak;の記述がされていなければ後続に記述されている処理も実行してしまいます。

下記のコードを見てみましょう。

let food = "ramen";

switch (food) {
  case "ramen":
    console.log("ラーメン");
  case "steak":
    console.log("ステーキ");
  default:
    console.log("その他");
}

処理を実行すると「ラーメン・ステーキ・その他」が表示されます。1つ目のcaseに一致しコンソールに「ラーメン」が表示された後、break;がないため次のcaseブロック内の処理を実行しコンソールに「ステーキ」が表示されます。ここでもbreak;がないため最後のdefault内の処理が実行されコンソールに「その他」が表示されます。

上記コードにbreak;をセットして再度実行してみましょう。

let food = "ramen";

switch (food) {
  case "ramen":
    console.log("ラーメン");
    break;
  case "steak":
    console.log("ステーキ");
    break;
  default:
    console.log("その他");
    break;
}

今度は、コンソールに「ラーメン」だけ表示がされるようになりました。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村