我正试图在家里学习JavaScript,我正在做一些基本的程序,在这个程序中,我试图使用switch语句,但我不明白为什么它会自动回答"default“
let note = Number(prompt("Quel note as tu eu au baccalauréat?"));
switch (note) {
case (note < 10):
console.log("Tu es refusé, retente ta chance l'année prochaine");
break;
case ((note => 10) && (note <= 12)):
console.log("Tu as réussi l'éxamen, félicitations");
break;
case (note > 12):
console.log("Félicitations, tu as réussi ton examen avec mention");
break;
default: console.log("Entre une note comprise entre 0 et 20")
}
发布于 2018-12-08 20:27:32
您的switch语句没有真正的意义。
switch (note)说你想要比较note的值,但是case (note < 10)说你想把它和(note < 10)的结果进行比较。
你实际上是在问note是否等于(note < 10),也就是note == (note < 10)。
你能做的就像这样
switch (note) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
...
break;
case 10:
case 11:
case 12:
...
break;但如您所见,这变得非常单调乏味。switch不是为基于范围的比较而设计的。在您的情况下,最好的解决方案是只使用if/else if链。
发布于 2018-12-08 20:34:28
您需要使用true而不是note
switch(note) -> switch(true)
因为case的条件总是会导致true和false.and,所以您试图将它与一个与任何大小写都不匹配的数字进行比较,因此它将直接转到默认值。
let note = Number(prompt("Quel note as tu eu au baccalauréat?"));
switch (true) {
case (note < 10):
console.log("Tu es refusé, retente ta chance l'année prochaine");
break;
case ((note >= 10) && (note <= 12)):
console.log("Tu as réussi l'éxamen, félicitations");
break;
case (note > 12):
console.log("Félicitations, tu as réussi ton examen avec mention");
break;
default: console.log("Entre une note comprise entre 0 et 20")
}
P.S -在这种情况下,使用if else比使用switch更好。
发布于 2018-12-09 21:36:55
这就是我要找的:
let note = parseInt(prompt("Quel note as tu eu au baccalauréat?"));
if ((note < 0) || (note > 20)) {console.log("Entre une note comprise entre 0 et 20")}
else if (note < 10) {console.log("Tu as raté ton examen")}
else if ((note => 10) && (note <= 12)) {console.log("Félicitations")}
else if ((note > 12) && (note <= 20)) {console.log("Tu as réussi ton examen avec mention")}谢谢你们的帮助
https://stackoverflow.com/questions/53682490
复制相似问题