同じケースでaまたはbswitch
case
をテストする必要がある場合、どのように a を使用しますか?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
同じケースでaまたはbswitch
case
をテストする必要がある場合、どのように a を使用しますか?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
フォールスルーを使用できます:
switch (pageid)
{
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
他の回答では、実際に機能する理由を説明せずにその方法を説明しているので:
がswitch
実行されると、最初に一致するcase
ステートメントが検出され、switch の後のコードの各行が、break
ステートメントまたはステートメントの末尾switch
(またはreturn
含まれている関数全体を終了するステートメント) に到達するまで実行されます。break
次のコードも実行されるように意図的に を省略した場合、これはフォールスルーcase
と呼ばれます。したがって、OPの要件については:
switch (pageid) {
case "listing-page":
case "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
ステートメントを含めるのを忘れることbreak
は、かなり一般的なコーディングの間違いであり、期待どおりに動作しない場合に最初に探す必要がありますswitch
。そのため、break ステートメントが意図的に省略されていることを明確にするために、"フォール スルー" というコメントを入れることを好む人もいます。次の例では、もう少し複雑で、失敗する前に実行するコードを含めることができるケースがあることを示しているため、これを行います。
switch (someVar) {
case 1:
someFunction();
alert("It was 1");
// fall through
case 2:
alert("The 2 case");
// fall through
case 3:
// fall through
case 4:
// fall through
case 5:
alert("The 5 case");
// fall through
case 6:
alert("The 6 case");
break;
case 7:
alert("Something else");
break;
case 8:
// fall through
default:
alert("The end");
break;
}
(オプションで) ケースを含めることもできますdefault
。これは、他のケースが一致しない場合に実行されます。a を含めず、default
一致するケースがない場合は、何も起こりません。(オプションで)デフォルトのケースにフォールスルーできます。
したがって、私の 2 番目の例では if someVar
is 1 が呼び出さsomeFunction()
れ、複数のケースを通過するときに 4 つのアラートが表示され、そのうちのいくつかにはアラートがあります。someVar
3、4、または 5 の場合、2 つのアラートが表示されます。7 の場合someVar
は「その他」と表示され、8 またはその他の値の場合は「終わり」と表示されます。
case
2 つのラベルを作成する必要があります。
コントロールは最初のラベルから 2 番目のラベルにフォールスルーするため、どちらも同じコードを実行します。
あなたはそれを切り替える必要があります!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}