你会如何使用switch
case
当你需要测试在同一案件中一个或b?测试多个案件在交换机,像OR(||)
switch (pageid) {
case "listing-page" || "home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
你会如何使用switch
case
当你需要测试在同一案件中一个或b?测试多个案件在交换机,像OR(||)
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;
}
它被称为* fall-through *。 –
我在发布问题之前发现了这个问题,但认为它对社区很有用,因为它在任何地方都没有很好的文档记录......谢谢@SLaks对你也是一样。 – Andres
嗨@kei我知道这不是适当的地方,但你正确回答我的最后一个问题http://stackoverflow.com/questions/21049005/jquery-animate-background-color-not-animating?noredirect=1 #comment31647804_21049005你想重新发布你的答案吗? –
你需要做两个case
标签。
控件将从第一个标签到第二个标签,因此它们都会执行相同的代码。
由于其他答案解释如何做到这一点没有实际解释为什么它的工作原理:当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
且没有任何匹配的情况,则不会发生任何情况。您可以(可选)进入默认情况。
因此,在我的第二个示例中,如果someVar
为1,它会调用someFunction()
,然后您会看到四个警报,因为它通过多种情况下发生,其中一些警报下有警报。是someVar
是3,4或5你会看到两个警报。如果someVar
是7,你会看到“其他”,如果它是8或任何其他值,你会看到“结束”。
使用逗号分隔情况下
switch (pageid)
{
case "listing-page","home-page":
alert("hello");
break;
case "details-page":
alert("goodbye");
break;
}
如果pageid是'“listing-page”',则不起作用。 – kodkod
你必须选择它!
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");
}
[使用OR运算符在javascript switch语句]可能重复(http://stackoverflow.com/questions检查/ 6476994 /使用或运算符在JavaScript的开关语句) - 这是100%你的问题;) –