2016-06-09 6 views
-7

Zum Beispiel habe ich den folgenden Code;Schaltergehäuse (ein Gehäuse schneidet ein anderes Gehäuse)

switch ("SS") { 
    case "SS": 
     word = "hello"; 
     break; 
    case "SSS": 
     word = "bye"; 
     break; 
} 

Ich suche nach SSS aber wenn es die erste SS sieht, passt es mit dem ersten Fall und word = hello Wie kann ich den Code ändern, wenn ich eine solche Situation, in einem Fall einen anderen Fall schneidet?

+0

funktionieren Die Situation ist die gleiche, wenn Sie Zeichenfolge haben. –

+0

Invertieren Sie die beiden Fälle? – jonrsharpe

+0

Ich invertiere, aber das Ergebnis ist gleich. Es geht zum "SS" -Fall. –

Antwort

0

schalten Sie den Zustand als String um.

var condition = '0';// or '00' 
switch (condition) { 
    case '0': 
     word = "hello"; 
     break; 
    case '00': 
     word = "bye"; 
     break; 
} 
+0

''00'' ist ein unzulässiges Zeichen literal – Holger

+0

@Holger überprüfen Sie es über Browser-Konsole – azad

+0

Ja, ich dachte in Java für einen Moment :-( – Holger

0

Parse es als String und verwenden diese

switch ("00") { 
case "0": 
    word = "hello"; 
    break; 
case "00": 
    word = "bye"; 
    break; 

}

+0

Dies funktioniert nicht wie ich schon sagte. –

+0

Aber warum verwenden Sie ein String innerhalb des Falles, dass stattdessen eine Variable? – David

+0

Einen konstanten Ausdruck einschalten, ist Unsinn. Es gibt nichts zu schalten. – Holger

1

Sie erhalten, weil 00 = 0; Wenn Sie erreichen wollen die Wünsche führen, Verwendung Strings anstelle von Zahlen wie folgt:

var condition = "00"; 
switch (condition) { 
     case "0": 
      word = console.log("hello"); 
      break; 
     case "00": 
      word = console.log("bye"); 
      break; 
} 
+0

Einen konstanten Ausdruck einzuschalten ist Unsinn. Es gibt nichts zu schalten. – Holger

0

00 falsch ist, wie Sie versuchen, diesen Wert als eine ganze Zahl zu übergeben. Eine ganze Zahl kann nicht mit einer 0 gefolgt von etwas beginnen. Im Hintergrund wird Ihr 00-Wert in eine einfache verwandelt 0

Wenn Sie Ihren Ansatz behalten möchten, sollten Sie es in einen String wie '00'

und tun es wie folgt konvertieren:

switch ('00') { 
    case '0': 
     word = "hello"; 
     break; 
    case '00': 
     word = "bye"; 
     break; 
} 
0

Try diese

switch ('00') { 
    case '0': 
     word = "hello"; 
     break; 
    case '00': 
     word = "bye"; 
     break; 
} 

Ergebnis ist

bye

0

switch ing auf ein wörtlichen"SS" wird immer nehmen Sie an den "SS" Fall Etikett (oder der default - falls vorhanden - wenn "SS" als Fall Etikett fehlt).

Normalerweise neigen Sie dazu, auf einer Variable zu wechseln, obwohl die Fall Etiketten Konstanten sein.

Wenn Sie möchten, dass der Programmsteuerungsfluss in case direkt unter einem anderen fortgesetzt wird, löschen Sie die entsprechende break; Anweisung.

0
switch("00") 
{ 
case "0": 
    console.log("Hello");break; 
case "00": 
    console.log("Bye");break; 
} 

Zeichenfolge anstelle der Zahl verwenden. Falls Sie eine Nummer, so dass es innerhalb Schaltzustand heißt Schalter (input.toString()) als string {...} Dies wird

Verwandte Themen