简单的评分系统。不断收到错误“未定义”。我做错了什么?

时间:2019-01-29 13:19:22

标签: javascript switch-statement

我一直收到错误“未定义”,但只有一个已经定义的变量(等级)。我们将非常感谢您的协助。

//Grading system:
// A = 84 and above       // D = 50 - 59
// B = 71 - 83            // E = 49 and below
// C =  60 - 70

function Grading_System(grade){
  var grade;

  switch(grade){
      case(grade >= 84):
        return "A";
        break;
      case(grade < 84 && grade > 70):
        return "B";
        break;
      case(grade >= 60 && grade <= 70):
        return "c";
        break;
      case(grade >= 50 && grade < 60):
        return "D";
        break;
      case(grade < 50):
        return "E";
        break;
  }
}
console.log(Grading_System(69));

2 个答案:

答案 0 :(得分:2)

您需要使用true进行检查,因为该表达式是根据严格比较的switch statement的值进行评估和检查的。

switch (true) {

您可以省略break语句,因为前一个return语句结束了该函数。

function getGrade(grade) {
    switch (true) {
        case (grade >= 84):
            return "A";
        case (grade < 84 && grade > 70):
            return "B";
        case (grade >= 60 && grade <= 70):
            return "c";
        case (grade >= 50 && grade < 60):
            return "D";
    }
    return "E";
}

console.log(getGrade(69));

答案 1 :(得分:0)

您正在函数内部重新声明“等级”,但未对其进行初始化,因此它将是未定义的。删除行var grade;,看看它是否有效。最好还包括一个default,这样,如果没有开关匹配,则给出默认值,如果返回,我认为不需要'bre​​ak':

function Grading_System(grade){
  var grade;

  switch(grade){
      case(grade >= 84):
        return "A";
      case(grade < 84 && grade > 70):
        return "B";
      case(grade >= 60 && grade <= 70):
        return "c";
      case(grade >= 50 && grade < 60):
        return "D";
      case(grade < 50):
        return "E";
      default:
        return "F";
  }
}