我正在尝试在家学习JavaScript,并且正在做一些基本程序,为此,我正在尝试使用switch语句,但是我不明白为什么它会自动回答“默认” >
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")
}
答案 0 :(得分:1)
您的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
链。
答案 1 :(得分:0)
您需要使用 true ,而不是 note
switch(note)
-> switch(true)
因为大小写的条件将始终为true和false,因此您尝试将其与任何大小写都不匹配的数字进行比较,因此将直接使用默认值。
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")
}
PS -在这种情况下,使用if else
比switch
更好。
答案 2 :(得分:0)
那是我想要的:
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")}
感谢您的帮助人员
答案 3 :(得分:-4)
let note = Number(prompt("Quel note as tu eu au baccalauréat?"));
代替Number尝试使用parseInt
let note = parseInt(prompt("Quel note as tu eu au baccalauréat?"));
它可以解决您的问题