2017-04-07 7 views
1

Ich weiß, dass es möglich ist, mehrere Fälle auszuführen, wenn alle dieselbe Aktion ausführen. Betrachtet man das Beispiel unten, wenn es wahr ist, dass A und B, dann etwas tun ...Wie zwei Fälle mit verschiedenen Funktionen gleichzeitig ausgeführt werden?

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

Ich bin aber nicht sicher, wie es für die folgende Arbeit zu bilden:

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

Wenn Es stimmt, dass sowohl A als auch B "A" und "B" anzeigen sollten. Wahrscheinlich ist switch statement keine gute Option für das Beispiel, aber ich konnte das nicht herausfinden. Irgendwelche Vorschläge, Empfehlungen?

+0

Was genau ist die Frage? Dies macht keinen Sinn wie gepostet. – Pointy

+0

Das ist unklar - wie könnte es zwei verschiedene Fälle gleichzeitig sein? –

+1

@OliverCharlesworth sieht aus wie '&&' Bedingung wo im ersten Fall '||' :) –

Antwort

0

Tradational Ich glaube, Sie versuchen, die switch falsch zu verwenden, sieht es aus wie Sie versuchen, zu überprüfen, ob A, B und C wahr sind, und wenn sie die passende alert() ausgeführt werden. Der Zweck eines switch ist zu überprüfen, was der Wert angegeben wird (also nur ein einziger Fall wahr sein kann) und es laufen, etwa so:

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); 
} 

So wird diese Überprüfung, was den Wert von fruit ist, wenn es ist "apple", "banana" oder "watermelon" es wird der Code des passenden Falls laufen.

Es sieht für mich wie das, was Sie wollen, verwenden, wenn Aussagen wie so:

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

Auf diese Weise können die Überprüfung sind, wenn A, B und Ctrue individuell sind und wenn einer von ihnen dann sind, was in Die {} der if-Anweisung wird ausgeführt (z. B. Funktionsaufrufe oder in diesem Fall Warnungen). Dies funktioniert für jede Kombination von A, B und C, die true/ ist.

0

Sie waren also verwirrt mit der Erklärung Ihres Problems.

case A: 
case B: 
    //do something; 

Dies ist eine oder Bedingung, wenn es A ist oder wenn es B ist, wird es wahr und ausgeführt.

Was Sie für

suchen Wenn es wahr ist, dass sowohl A als auch B, sollte es „A“ aufmerksam machen und „B“.

In diesem Fall funktioniert der Schalter nicht. Zurück else if

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

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

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

alert("C"); 

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

Sie sollten grundsätzlich nie switch(true) verwenden (es sei denn, Sie benötigen viel Durchfall), mit if/else ist viel sauberer. In Ihrem Fall würden Sie

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

haben und könnte dies trivialerweise zu

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

ändern, wenn das Ihre neuen Anforderungen entspricht.(Ja, das könnte man auch haben case A && B: getan, aber das ist viel schwerer zu verstehen)

Verwandte Themen