首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么switch语句会自动返回"default“

为什么switch语句会自动返回"default“
EN

Stack Overflow用户
提问于 2018-12-08 20:23:15
回答 4查看 75关注 0票数 1

我正试图在家里学习JavaScript,我正在做一些基本的程序,在这个程序中,我试图使用switch语句,但我不明白为什么它会自动回答"default“

代码语言:javascript
复制
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")
  }

EN

回答 4

Stack Overflow用户

发布于 2018-12-08 20:27:32

您的switch语句没有真正的意义。

switch (note)说你想要比较note的值,但是case (note < 10)说你想把它和(note < 10)的结果进行比较。

你实际上是在问note是否等于(note < 10),也就是note == (note < 10)

你能做的就像这样

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-12-08 20:34:28

您需要使用true而不是note

switch(note) -> switch(true)

因为case的条件总是会导致true和false.and,所以您试图将它与一个与任何大小写都不匹配的数字进行比较,因此它将直接转到默认值。

代码语言:javascript
复制
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更好。

票数 0
EN

Stack Overflow用户

发布于 2018-12-09 21:36:55

这就是我要找的:

代码语言:javascript
复制
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")}

谢谢你们的帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53682490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档