【问题标题】:Why does my switch statement parameter require a boolean? [duplicate]为什么我的 switch 语句参数需要一个布尔值? [复制]
【发布时间】:2018-04-28 01:49:29
【问题描述】:

据我了解,switch 语句中的参数应该是您与所有案例进行比较并返回正确案例的项目。

我的问题是为什么我的 switch 语句要求我输入布尔值 true 而不是我要比较所有案例的“分数”参数?谢谢!

这是练习

function convertScoreToGrade(score) {
  switch (true) {
    case (score > 100 || score < 0):
      return 'INVALID SCORE';
      break;
    case (score <=100 && score >= 90):
      return 'A';
      break;
    case (score <=89 && score >= 80):
      return 'B';
      break;
    case (score <=79 && score >= 70):
      return 'C';
      break;
    case (score <=69 && score >= 60):
      return 'D';
      break;
    case (score <=59 && score >= 0):
      return 'F';
      break;
  }
  return score;
}

【问题讨论】:

  • 因为这些情况返回布尔值。当您通过分数时,() 中的所有内容都会被评估,case 旁边的内容都会被评估。

标签: javascript function switch-statement boolean


【解决方案1】:

因为 JS 在与 switch 参数比较之前计算括号中的表达式。考虑这个例子:

convertScoreToGrade(71);

function convertScoreToGrade(score) {
  switch (true) {
    case (false):
      return 'INVALID SCORE';
      break;
    case (false):
      return 'A';
      break;
    case (false):
      return 'B';
      break;
    case (true):
      return 'C';
      break;
    case (false):
      return 'D';
      break;
    case (false):
      return 'F';
      break;
  }
  return score;
}

很好的解释in this answer

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    相关资源
    最近更新 更多