javascript - 为什么我的 switch 语句参数需要 boolean 值?

标签 javascript function switch-statement boolean

<分区>

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

我的问题是为什么我的 switch 语句要求我输入 boolean 值 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;
}

最佳答案

因为 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 .

关于javascript - 为什么我的 switch 语句参数需要 boolean 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297208/

相关文章:

javascript - 如何判断弹出页面是否打开?

javascript - FlightJs 事件传播

javascript - jquery 的 html5 视频上的 iOS "done"回调按钮

C 程序问题 : scanf isn't working properly

Javascript:以数组名称的一部分作为参数的函数?

c++ - 将来自 switch 语句的信息存储到变量中?

C++ 长 switch 语句还是用 map 查找?

javascript - 从 Promise 的 Promise 中获取数据以及其他数据 (promise.all)

php - 为什么人们更喜欢 call_user_func_array 而不是常规的函数调用?

android - 当切换按钮在android中更改状态时如何删除效果