JavaScriptで複数条件分岐をスッキリ記述!switch文の使いこなし

2024-04-02

JavaScriptにおける複数条件分岐処理: Switch文

基本的な構文

switch (式) {
  case1:
    処理1;
    break;
  case2:
    処理2;
    break;
  default:
    処理3;
}
  • switch文の後に評価対象となる式を記述します。
  • caseラベルには、比較対象となる値を記述します。
  • 処理内容は、break文で区切ります。
  • どのcaseにも一致しない場合、defaultラベルの処理が実行されます。

複数の条件をまとめて処理

switch (曜日) {
  case '月曜日':
  case '火曜日':
  case '水曜日':
  case '木曜日':
  case '金曜日':
    // 平日の処理
    break;
  case '土曜日':
  case '日曜日':
    // 休日の処理
    break;
}

複数のcaseラベルを連続して記述することで、同じ処理を実行することができます。

値の範囲を指定

switch (点数) {
  case 90:
  case 95:
  case 100:
    // 満点の処理
    break;
  case 80:
  case 85:
    // 優秀な処理
    break;
  // 省略
}

caseラベルに演算子を用いることで、値の範囲を指定できます。

便利な機能

  • break文は省略可能です。省略すると、次のcaseラベルの処理まで実行されます。
  • caseラベルにfallthroughキーワードを記述することで、意図的に次のcaseラベルの処理まで実行できます。
  • 文字列やオブジェクトなども比較対象として利用できます。

注意点

  • switch文は、厳密な一致比較を行います。型変換は行われません。
  • defaultラベルは省略可能ですが、存在しない場合、どのcaseにも一致しない場合は処理が実行されません。

まとめ

switch文は、複数の条件分岐処理を簡潔に記述できる便利な機能です。コードの可読性向上、複雑化の防止に役立ちます。




const 曜日 = '月曜日';

switch (曜日) {
  case '月曜日':
  case '火曜日':
  case '水曜日':
  case '木曜日':
  case '金曜日':
    console.log('平日は頑張りましょう!');
    break;
  case '土曜日':
  case '日曜日':
    console.log('週末はゆっくり休んでください!');
    break;
  default:
    console.log('無効な曜日です。');
}

点数による評価

const 点数 = 85;

switch (点数) {
  case 90:
  case 95:
  case 100:
    console.log('満点です!素晴らしい!');
    break;
  case 80:
  case 85:
    console.log('優秀です!よく頑張りました!');
    break;
  case 70:
  case 75:
    console.log('合格です!もう少し頑張りましょう!');
    break;
  default:
    console.log('不合格です。次はもっと頑張りましょう!');
}

文字列による処理

const 色 = '青';

switch (色) {
  case '赤':
    console.log('情熱的な色ですね!');
    break;
  case '青':
    console.log('冷静沈着な色ですね!');
    break;
  case '緑':
    console.log('自然を感じさせる色ですね!');
    break;
  default:
    console.log('無効な色です。');
}

オブジェクトによる処理

const 動物 = {
  種類: '犬',
  鳴き声: 'ワン'
};

switch (動物.種類) {
  case '犬':
    console.log('ワンワン!');
    break;
  case '猫':
    console.log('ニャーニャー!');
    break;
  case '鳥':
    console.log('チュンチュン!');
    break;
  default:
    console.log('無効な動物です。');
}



複数条件分岐処理の他の方法

if文のネスト

if (条件1) {
  処理1;
} else if (条件2) {
  処理2;
} else if (条件3) {
  処理3;
} else {
  処理4;
}

最も基本的な方法ですが、条件分岐の数が増えるとコードが複雑化し、可読性が低下します。

テルナリー演算子

const 結果 = 条件 ? 処理1 : 処理2;

オブジェクトリテラル

const 処理 = {
  条件1: () => {
    // 処理1
  },
  条件2: () => {
    // 処理2
  },
  条件3: () => {
    // 処理3
  },
};

処理[条件]();

条件と処理をオブジェクトリテラルで定義することで、コードの可読性を向上させることができます。

関数

function 処理1() {
  // 処理1
}

function 処理2() {
  // 処理2
}

function 処理3() {
  // 処理3
}

const 処理 = 条件 ? 処理1 : 処理2;

処理();

処理を個別の関数に分割することで、コードの再利用性と可読性を向上させることができます。

まとめ

各方法のメリットとデメリット

方法メリットデメリット
switch簡潔厳密な一致比較
if文のネスト汎用性複雑化しやすい
テルナリー演算子簡潔条件分岐の増加に伴い複雑化
オブジェクトリテラル可読性記述量が増加
関数再利用性記述量が増加

どの方法が最適かは、条件分岐の数や処理内容によって異なります。コードの可読性と保守性を考慮して、適切な方法を選択しましょう。


javascript switch-statement


jQuery vs JavaScript vs HTML:画像ソース変更の比較

jQueryを使用すると、JavaScriptよりも簡潔に画像ソースを変更することができます。本記事では、画像ソース変更の基本的な方法と、いくつかの応用例について解説します。コード例以下のコードは、ボタンクリック時に画像ソースを変更する例です。...


Node.jsでリアルタイムWebアプリケーションを開発!Socket.IOでメッセージング機能を実装

このチュートリアルでは、Node. jsとSocket. IOを使用して、特定のクライアントにメッセージを送信する方法を説明します。Socket. IOは、リアルタイムの双方向通信を可能にするJavaScriptライブラリです。 Webサーバーとクライアント間で双方向にデータを送受信できるため、チャットアプリケーションやリアルタイムなゲームなどに最適です。...


動的JSロードの完全ガイド:jQuery、JavaScriptネイティブ、モジュールローダー

この解説では、jQueryとJavaScriptの両方を使って動的にJSをロードする方法を、初心者にも分かりやすく詳細に説明します。さらに、各方法のメリットとデメリット、応用例、そして実践的なコード例も豊富に紹介します。jQueryは、JavaScriptの操作を簡潔に記述できるライブラリです。動的にJSをロードする際も、jQueryの$.getScript()メソッドを使うと、非常に簡単に記述できます。...


イベントループの仕組みとマイクロタスクとマクロタスクの概要

JavaScript エンジンは、イベントループと呼ばれる仕組みを使用して非同期処理を管理します。イベントループは、タスクをキューに登録し、順番に処理していくループです。タスクには、マクロタスクとマイクロタスクの2種類があります。マクロタスクは、通常の JavaScript コードやタイマー、setTimeout() などの非同期APIで作成されるタスクです。イベントループが実行されると、まずマクロタスクキューからタスクを取り出して実行します。...


JavaScript、React、単体テストにおけるエクスポート定数モックの徹底ガイド

Jest での単体テストにおいて、エクスポートされた定数をモックすることは、テスト対象のコンポーネントやモジュールの動作を分離して検証する際に役立ちます。しかし、定数は通常再割り当てできないため、モックするのが難しい場合があります。このチュートリアルでは、JavaScript、React、単体テストの文脈において、エクスポートされた定数をモックする方法を分かりやすく解説します。...