Switch Case zeigt keine korrekten Ergebnisse an

Lesezeit: 2 Minuten

Benutzer-Avatar
Marc André Jiacarrini

Hier ist mein Skript

var marks = 11;
switch (marks) {
  case (marks < 20):
    console.log('Yes Freaking Failed');
    break;
  case (marks > 20):
    console.log('Ahh Its Ok');
    break;
  case (marks > 80):
    console.log('Whooping');
    break;
  default:
    console.log('Cant say u maybe Flunked');
    break;
}

Ich denke, es sollte angezeigt werden 'Yes Freaking Failed' weil die Noten weniger als 20 sind. Aber es zeigt sich 'Cant say u maybe Flunked'

Warum ist das so?

  • Sie können keine bedingten Anweisungen in Groß-/Kleinschreibung verwenden. Verwenden Sie if else

    – Arun P. Johny

    1. Mai 2015 um 2:30 Uhr

  • jsfiddle.net/arunpjohny/7qhxh31m/1

    – Arun P. Johny

    1. Mai 2015 um 2:32 Uhr

Wenn du schreibst

switch (x) {
case(y):
    ...
}

es ist gleichbedeutend mit testen

if (x == y) {
    ...
}

So

case (marks < 20):

meint:

if (marks == (marks < 20)) {

Sie können nicht verwenden case Für Reichweitentests wie diesen müssen Sie eine Reihe von verwenden if/else if:

if (marks < 20) {
    console.log('Yes Freaking Failed');
} else if (marks < 80) {
    console.log('Ahh Its OK');
} else {
    console.log('Whooping');
}

Beachten Sie auch, dass es niemals ausgeführt werden könnte, wenn es so funktioniert, wie Sie es sich vorgestellt haben marks > 80denn das würde auch passen marks > 20und der erste übereinstimmende Fall wird immer ausgeführt.

Es besteht keine Notwendigkeit für die Cant say u maybe flunked Fall, weil es keine anderen Möglichkeiten gibt.

Technisch ist es nicht möglich. Javascript macht es so.

Wenn Sie vergleichen müssen, verwenden Sie if/else if/else.

Switch-Fälle werden verwendet, wenn Sie wissen, dass Sie bestimmte Werte haben werden.

var marks=11;
    switch(marks){
        case (11):
        console.log('It would go in here');
        break;
        case (42):
        console.log('If equal to 42');
        break;
        case (80):
        console.log('if equal to 80.');            
        break;

        default:
        console.log('Cant say u maybe Flunked');
        break;
    }

Ihr Code ist äquivalent zu:

var marks=11;
switch(marks){
    case (true):
    console.log('Yes Freaking Failed');
    break;
    case (false):
    console.log('Ahh Its Ok');
    break;
    case (false):
    console.log('Whooping');    
    break;          
    default:
    console.log('Cant say u maybe Flunked');
    break;
}

marks ist nicht true und ist nicht false – Also switch geht zu default.

Wenn Sie die switch-Anweisung verwenden, werten Sie Markierungen aus und vergleichen die Werte der Markierungen mit den Fällen. Und Sie haben die folgenden Fälle: 1, 0, 0, Standard. Das liegt daran, dass (marks<20) zu wahr ausgewertet wird, was 1 ist, und die anderen beiden sind falsch, was 0 ist. Sie sollten also in Ihrem Fall if und else if tun.

1015340cookie-checkSwitch Case zeigt keine korrekten Ergebnisse an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy