2017-04-07 59 views
1

我知道如果所有人都做同樣的動作,就可以運行多個案例。考慮下面的例子中,如果這是真的,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看起來像'&&'條件,其中第一種情況是'||':) –

回答

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語句,像這樣:

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

這樣,如果ABCtrue獨立,如果任何人都那麼什麼是你正在檢查if語句的{}將運行(例如函數調用或本例中的警報)。這將適用於ABC的任何組合,其爲true/false

0

所以你對解釋你的問題感到困惑。

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 
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:但這很難理解)

相關問題