どのように使用することになりswitch
case
、あなたがのためにテストする必要がある場合やBと同じ場合には?
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
どのように使用することになりswitch
case
、あなたがのためにテストする必要がある場合やBと同じ場合には?
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
ステートメントが見つかり、切り替え後のステートメントの各行が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
期待どおりに機能していない場合に最初に確認する必要があります。そのため、ブレークステートメントが意図的に省略されていることを明確にするために、「フォールスルー」とコメントを入れたい場合があります。次の例では、少し複雑で、フォールスルーする前に実行するコードを含めることができる場合があることを示しているので、これを行います。
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
ケースを含めることもできます。これは、他のケースが一致しない場合に実行されます-を含めず、default
一致するケースがない場合は、何も起こりません。(オプションで)デフォルトのケースに進むことができます。
したがって、私の2番目の例でsomeVar
は、1の場合に呼び出されsomeFunction()
、複数のケースに該当する場合に4つのアラートが表示されます。であるsomeVar
あなたが2回の警告を参照してくださいね3、4または5です。someVar
7の場合は「何か他の値」が表示され、8またはその他の値の場合は「終わり」が表示されます。
あなたはそれを切り替える必要があります!
switch (true) {
case ( (pageid === "listing-page") || (pageid === ("home-page") ):
alert("hello");
break;
case (pageid === "details-page"):
alert("goodbye");
break;
}
忘れswitch
てbreak
、で遊んでみましょうif
。そして主張する代わりに
if(pageid === "listing-page" || pageid === "home-page")
ケース付きのいくつかの配列を作成し、それをArray.prototype.includes()で確認します
var caseA = ["listing-page", "home-page"];
var caseB = ["details-page", "case04", "case05"];
if(caseA.includes(pageid)) {
alert("hello");
}
else if (caseB.includes(pageid)) {
alert("goodbye");
}
else {
alert("there is no else case");
}