如何同时运行两个不同功能的案例?

问题描述:

我知道如果所有人都做同样的动作,就可以运行多个案例。考虑下面的例子中,如果这是真的,A和B,然后做一些事情......如何同时运行两个不同功能的案例?

switch(true){ 
case A: 
case B: 
    //do something; 
break; 
case C: 
    //do something else;} 

但是,我不知道如何使它如下工作:

switch(true){ 
case A: 
    alert("A"); 
case B: 
    alert("B"); 
break; 
case C: 
    //do something else;} 

如果A和B都应该提醒A和B。可能的话,switch语句对于这个例子不是一个好的选择,但我无法弄清楚这一点。任何建议,建议?

+0

究竟是什么问题?这与发布无关。 – Pointy

+0

这还不清楚 - 这怎么可能是两个不同的情况? –

+1

@OliverCharlesworth看起来像'&&'条件,其中第一种情况是'||':) –

我想你想使用switch不当,它看起来像你想检查是否ABC是真的,如果他们运行匹配alert()。 一个switch的目的是检查所给出的值是什么(所以只有一种情况可能是真的),并运行它,就像这样:

function demoFunction1(fruit){ 
    var sentence = ""; 
    switch (fruit) { 
     case "apple": sentence = "I love apples!"; break; 
     case "banana": sentence = "I hate bananas!"; break; 
     case "watermelon": sentence = "Watermelon is okay"; break; 
    } 
    alert(sentence); 
} 

所以这是检查什么的fruit值,如果它是"apple","banana""watermelon"它将运行匹配案例的代码。

它看起来对我来说,你想做的用途是if语句,像这样:

function demoFunction2(A, B, C){ 
    if (A) { 
     alert("A"); 
    } 
    if (B) { 
     alert("B"); 
    } 
    if (C) { 
     alert("C"); 
    } 
} 

这样,如果ABCtrue独立,如果任何人都那么什么是你正在检查if语句的{}将运行(例如函数调用或本例中的警报)。这将适用于ABC的任何组合,其为true/false

所以你对解释你的问题感到困惑。

case A: 
case B: 
    //do something; 

这是一个或条件,如果它是A或者如果它是B,则它变为true并执行。

你在找什么

如果这是真的,A和B,它应提醒“A”和“B”。

在这种情况下,开关将不起作用。回到tradational else if

if (str.equals("A") && str.equals("B")) { 

    alert("A"); 
    alert("B"); 

}else if(str.equals("C")){ 

alert("C"); 

}else...... // other conditions 

你应该基本上从不使用switch(true)(除非你需要大量的跌落),使用if/else更清洁。在你的情况,你会

if (A || B) { 
    // do something; 
} else if (C) { 
    // do something else; 
} 

,并可能平凡更改为

if (A && B) { 
    alert("A"); 
    alert("B"); 
} else if (C) { 
    // do something else; 
} 

当适合您的新的要求。(是的,你也可以做case A && B:但这很难理解)