JavaScript switch case ステートメントの構文は次のとおりです。
switch(式){
case value1:
statements1 // 式の結果がvalue1に等しい場合、このコードが実行されます
ブレーク;
case value2:
statements2 // 式の結果がvalue2に等しい場合、このコードが実行されます
ブレーク;
......
case valueN:
statementsN // 式の結果がvalueNに等しい場合、このコードが実行されます
ブレーク;
default:
statements // 式と一致する値がない場合は、このコードが実行されます
}
switch ステートメントは、式の値に基づいて、case 句の値を順番に比較します。
- 2 つが等しい場合は、後続のステートメント セグメントを実行し、break キーワードが検出されたときに switch ステートメント全体から飛び出します。
- 等しくない場合は、次のケースに引き続き一致します。
- switch ステートメントにはオプションの default キーワードが含まれており、前のケースで等価条件が見つからない場合は、default に続くステートメントが実行されます。
注: switch ステートメントでは、式は合同 (===) を使用して、各 cese 句の値を一致させます。等値演算子を使用しているため、各値の型は自動変換されません。
次の図に、switch ステートメントの実行フロー (動作原理) を示します。
ブレーク キーワード
switch ステートメントは行ごとに実行されます. switch ステートメントが一致する case 句を見つけると、その句に対応するコードを実行するだけでなく、switch ステートメントの最後まで逆方向に実行し続けます.これを防ぐには、各 case 句の最後で switch ステートメントを中断します。
break は、switch ステートメントから抜け出すだけでなく、後で詳しく紹介するループ ステートメント (for、for in、while、do while など) から抜け出すためにも使用できます。
case句
case 句はステートメントを省略できるため、一致した場合、次の case の条件が満たされるかどうかに関係なく、次の case 句のステートメントが引き続き実行されます。
【事例2】 一般会員とVIP会員の組み合わせによる検知例を以下に示します。
var id = 1;
switch (id) {
case 1 :
case 2 :
console.log("VIP会員");
break;
case 3 :
console.log("管理者");
break;
default :
console.log("観光客");
}
switch 文の case 句は実行の開始点のみを指定し、実行の終了点を指定していません. case 句に break 文がない場合、連続実行が発生するため、次の条件制限は無視されます。 case 節 switch 構造のロジックを破壊するのは簡単です。
関数内で switch ステートメントを使用する場合、return ステートメントを使用して switch ステートメントを終了し、コードが続行されないようにすることができます。
default/デフォルトステートメント
default は switch 句であり、switch 内のどこにでも配置でき、他の case 句の通常の実行には影響しません。次の例では、default ステートメントを使用する際に注意すべき 3 つの問題を紹介します。
【例 3】 default の下に case 句がある場合、default の後に break 文を追加して switch 構造を終了し、プログラムが case 条件の限界を突破して次の case 句を実行し続けることを防止します。
var id = 1;
switch (id) {
default :
console.log("見学者");
break;
case 1 :
console.log("一般会員");
break;
case 2 :
console.log("VIP会員");
break;
case 3 :
console.log("管理者");
break;
}
【例 4】 以下のコードでは、 Java Script はまず case 式の値をチェックし、case 式の値が一致しないため、default 句の実行にジャンプし、続けて case 1 とケース2節。ただし、デフォルト句は返されず、最後に実行を繰り返します。
var id = 3;
switch (id) {
default :
console.log("観光客");
case 1 :
console.log("一般会員");
case 2 :
console.log("VIP会員");
}
【例 5】 次の例では、switch 文を使用して四則演算関数を設計しています。 switch 構造では、最初にユース ケースを使用して予測可能な 4 つの算術演算を列挙します. もちろん、引き続き case 句を拡張して、可能なすべての演算を列挙することもできますが、すべての予期しない状況を列挙することは不可能であるため、最後に default を使用して予期しない状況を処理します。 .
oper(a,b,opr) {
switch (opr) {
case "+" :
return a + b;
case "-" :
return a - b;
case "*" :
return a * b;
case "/" :
return a / b;
default :
return "予期せぬopr値です";
}
}
console.log(oper (2,5,"*")); //10を返します
default ステートメントと case ステートメントの簡単な比較は次のとおりです。
- セマンティクスは異なります。デフォルトはデフォルト項目であり、ケースは先例です。
- 機能拡張: デフォルトのオプションは固有であり、拡張できません。ケースオプションは制限なく拡張可能です。
- 例外処理: デフォルトとケースは異なる役割を果たし、ケースは列挙に使用され、デフォルトは例外処理に使用されます。