我知道如果所有人都做同样的动作,就可以运行多个案例。考虑下面的例子,如果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 :(得分: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
,看起来您正在尝试检查A
,B
和C
是真的,如果他们运行匹配的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");
}
}
通过这种方式,您可以单独检查A
,B
和C
是否true
,如果其中任何一个是{1}将运行if语句的{}
(例如函数调用或本例警报)。这适用于A
,B
和C
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:
,但这很难理解)