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

时间:2017-04-07 13:51:38

标签: 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 something else;} 

如果A和B都是真的,它应该警告" A"和" B"。可能,switch语句对于这个例子来说不是一个好的选择,但我无法弄清楚这一点。有什么建议,推荐吗?

3 个答案:

答案 0 :(得分:0)

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

Vagrant.configure(2) do |config|
  config.vm.box = "hashicorp/precise32"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, host: 4567, guest: 80, host_ip: "127.0.0.1"
end

这是一个条件,如果它是A或者它是B,它就会成立并执行。

您在寻找什么

  

如果A和B都是,它应该警告“A”和“B”。

在这种情况下,开关不起作用。回到传统的 case A: case B: //do something;

else if

答案 1 :(得分:0)

我认为您正在尝试错误地使用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 if statement:

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

通过这种方式,您可以单独检查ABC是否true,如果其中任何一个是{1}将运行if语句的{}(例如函数调用或本例警报)。这适用于ABC true / false的任意组合。

答案 2 :(得分:0)

你基本上不应该使用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:,但这很难理解)