开关情况下的JavaScript或expression式

当您需要在相同的情况下testing“a” “b”时,您将如何使用开关盒?

switch (pageid) { case "listing-page" || "home-page": alert("hello"); break; case "details-page": alert("goodbye"); break; } 

你可以使用fall-through:

 switch (pageid) { case "listing-page": case "home-page": alert("hello"); break; case "details-page": alert("goodbye"); break; } 

由于其他答案解释了如何做到这一点,而没有真正解释为什么它的作品:

switch执行时,它find第一个匹配的case语句,然后在交换机之后执行每一行代码,直到遇到break语句或者switch的结尾(或者return语句离开整个包含函数)。 当你故意忽略这个break这样下一个代码下的代码也会被执行,这就是所谓的下降 。 所以对于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情况下匹配则什么都不会发生。 您可以(可选)进入默认情况。

所以在我的第二个例子中,如果someVar是1,它会调用someFunction() ,然后你会看到四个警报,因为它通过多个情况下,其中一些警报下有警报。 someVar是3,4或5你会看到两个警报。 如果一些someVar是7,你会看到“其他”,如果它是8或任何其他值,你会看到“结束”。

你需要制作两个case标签。

控件将从第一个标签到第二个标签,所以他们都会执行相同的代码。

你必须切换它!

 switch (true) { case ( (pageid === "listing-page") || (pageid === ("home-page") ): alert("hello"); break; case (pageid === "details-page"): alert("goodbye"); break; } 

忘记switchbreak ,让我们玩吧。 而不是断言

 if(pageid === "listing-page" || pageid === "home-page") 

可以创build几个数组,并用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"); } 

使用逗号分隔大小写

 switch (pageid) { case "listing-page","home-page": alert("hello"); break; case "details-page": alert("goodbye"); break; } 
Interesting Posts