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
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.
10153400cookie-checkSwitch Case zeigt keine korrekten Ergebnisse anyes
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