为什么switch语句自动回答“默认”

时间:2018-12-08 12:23:15

标签: javascript switch-statement

我正在尝试在家学习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")
  }

4 个答案:

答案 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 elseswitch更好。

答案 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?"));

它可以解决您的问题