Простая система оценок.Продолжайте получать ошибку «неопределено».Что я делаю не так? - PullRequest
0 голосов
/ 29 января 2019

Я получаю ошибку 'undefined', но у меня есть только одна переменная (оценка), которую я уже определил.Помощь будет высоко оценена.

//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 голосов
/ 29 января 2019

Вы повторно объявляете «оценку» внутри функции, но не инициализируете ее, поэтому она будет неопределенной.Удалите строку var grade; и посмотрите, работает ли она.Также было бы неплохо включить default, чтобы при отсутствии совпадения с переключателем указывалось значение по умолчанию, и я не думаю, что вам нужен 'break's, если вы возвращаетесь:

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";
  }
}
0 голосов
/ 29 января 2019

Вам необходимо проверить с помощью true, потому что выражение оценивается и сравнивается со значением switch оператора со строгим сравнением.

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));
...