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

Javascript 如何同时运行具有不同功能的两个案例?,javascript,switch-statement,Javascript,Switch Statement,我知道,如果所有案例都执行相同的操作,则可以运行多个案例。考虑下面的例子,如果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

我知道,如果所有案例都执行相同的操作,则可以运行多个案例。考虑下面的例子,如果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语句可能不是一个好的选项,但我无法理解这一点。有什么建议吗,推荐?

所以你在解释你的问题时感到困惑

 case A:
 case B:
  //do something;
这是一个or条件,如果它是A,或者如果它是B,它将变为true并执行

你在找什么

如果A和B都为真,则应提醒“A”和“B”

那样的话,开关就坏了。如果

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

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

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

 alert("C");

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

所以你在解释你的问题时感到困惑

 case A:
 case B:
  //do something;
这是一个or条件,如果它是A,或者如果它是B,它将变为true并执行

你在找什么

如果A和B都为真,则应提醒“A”和“B”

那样的话,开关就坏了。如果

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

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

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

 alert("C");

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

我认为您试图错误地使用
开关
,看起来您试图检查
A
B
C
是否正确,以及它们是否运行匹配的
警报()。
开关
的目的是检查给定的值是什么(因此只有一种情况可以为真),并运行它,如下所示:

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);
}
因此,这是检查
水果的值是多少,如果它是
“苹果”
“香蕉”
“西瓜”
,它将运行匹配案例的代码

在我看来,你想用的是这样的if语句:

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

通过这种方式,您可以分别检查
A
B
C
是否为
true
,如果其中任何一个为true,则if语句的
{}
中的内容将运行(例如函数调用或在本例中为警报)。这将适用于
A
B
C
的任何组合,即
true
/
false
我认为您试图错误地使用
开关,看起来您试图检查
A
B
C
是否为true,以及它们是否运行了匹配的
警报()
开关
的目的是检查给定的值是什么(因此只有一种情况可以为真),并运行它,如下所示:

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);
}
因此,这是检查
水果的值是多少,如果它是
“苹果”
“香蕉”
“西瓜”
,它将运行匹配案例的代码

在我看来,你想用的是这样的if语句:

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

通过这种方式,您可以分别检查
A
B
C
是否为
true
,如果其中任何一个为true,则if语句的
{}
中的内容将运行(例如函数调用或在本例中为警报)。这将适用于
A
B
C
的任何组合,即
true
/
false

如果
/
其他
更干净,则基本上不应使用
开关(true)
(除非您需要大量失败)。在你的情况下,你会

if (A || B) {
  // do something;
} else if (C) {
  // do something else;
}
可以把这个简单地改成

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

当这符合你的新要求时。(是的,你也可以做
案例A和&B:
,但这更难理解)

你基本上不应该使用
开关(true)
(除非你需要大量的失败),如果
/
的话使用
,否则
会更干净。在你的情况下,你会

if (A || B) {
  // do something;
} else if (C) {
  // do something else;
}
可以把这个简单地改成

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

当这符合你的新要求时。(是的,你也可以做
案例A和&B:
,但这更难理解)

问题到底是什么?这在帖子中没有任何意义。这还不清楚-怎么可能是两种不同的情况同时发生?@OliverCharlesworth看起来像是
&&
条件,其中第一种情况是
|
:)Switch语句是该逻辑的错误选择。为了澄清这一点:假设你得到了苹果、橘子和香蕉。如果苹果是绿色的,吃它;如果没有,扔掉它。如果橘子是甜的,给你妈妈;如果没有,扔掉它。如果香蕉是新鲜的,保存它;如果没有,就扔进垃圾桶。因此,苹果是绿色的,橙色是甜的,但香蕉是腐烂的。所以你要吃苹果,把橘子给你妈妈。三分之二的案例是正确的,每个案例都要求你做不同的事情。问题到底是什么?这在帖子中没有任何意义。这还不清楚-怎么可能是两种不同的情况同时发生?@OliverCharlesworth看起来像是
&&
条件,其中第一种情况是
|
:)Switch语句是该逻辑的错误选择。为了澄清这一点:假设你得到了苹果、橘子和香蕉。如果苹果是绿色的,吃它;如果没有,扔掉它。如果橘子是甜的,给你妈妈;如果没有,扔掉它。如果香蕉是新鲜的,保存它;如果没有,就扔进垃圾桶。因此,苹果是绿色的,橙色是甜的,但香蕉是腐烂的。所以你要吃苹果,把橘子给你妈妈。三分之二的情况是正确的,每个情况都要求你做不同的事情。