0
votes

Mon code revient sans cesse indéfini sous la sortie

Ma fonction JavaScript continue de renvoyer indéfini sous la valeur de sortie correcte.

let grade;

function getGrade(score) {
    // Write your code here
    if (score >= 25 && score <= 30) {
        console.log('A');
    }
    else if (score >= 20 && score <= 25) {
        console.log('B');
    }
    else if (score >= 15 && score <= 20) {
        console.log('C');
    }
    else if (score >= 10 && score <= 15) {
        console.log('D');
    }
    else if (score >= 5 && score <= 10) {
        console.log('E');
    }
    else {
        console.log('F');
    }
    return grade;
}


5 commentaires

Quelle est la sortie attendue et quelle est l'entrée?


c'est parce que vous n'avez pas défini ce qu'est la note . Vous pouvez le définir dans vos instructions if, puis return


vous renvoyez la note mais où la déclarez-vous et la remplissez-vous?


même après avoir déclaré let grade; en dehors de ce que vous en faites .. pourquoi ne devrait-il pas retourner undefined?


OP a déclaré grade mais il avait été omis du bloc de code car le balisage manquait une nouvelle ligne après les trois `` ''.


5 Réponses :


1
votes

Il semble que vous ayez une note de retour; en bas, mais la note ne semble être définie nulle part.


0 commentaires

1
votes

Vous devez définir la valeur de votre variable "note", ou simplement supprimer

return grade;


0 commentaires

1
votes

Utilisez return au lieu de console.log()

function getGrade(score) {
    let grades = 'FEDCBA' 
    return score === 30 ? 'A' : grades[Math.floor((score)/5)]    
}
console.log(getGrade(20))
console.log(getGrade(19))
console.log(getGrade(30))

Comme il y a une différence de 5 entre chaque gamme de notes, vous pouvez donc utiliser la division et Math.floor

function getGrade(score) {
    if (score >= 25 && score <= 30) {
        return 'A'
    }
    else if (score >= 20 && score <= 25) {
        return 'B'
    }
    else if (score >= 15 && score <= 20) {
        return 'C';
    }
    else if (score >= 10 && score <= 15) {
        return 'D';
    }
    else if (score >= 5 && score <= 10) {
        return 'E';
    }
    else {
        return 'F';
    }
}
console.log(getGrade(20))


0 commentaires

1
votes

Vous n'avez pas défini votre note . Et ce sera toujours indéfini .

Une façon de le faire est la suivante:

function getGrade(score) {
    var grade = "";
    // Write your code here
    if (score >= 25 && score <= 30) {
        grade = "A";
    }
    else if (score >= 20 && score <= 25) {
        grade = "B";
    }
    else if (score >= 15 && score <= 20) {
        grade = "C";
    }
    else if (score >= 10 && score <= 15) {
        grade = "D";
    }
    else if (score >= 5 && score <= 10) {
        grade = "E";
    }
    else {
        grade = "F";
    }
    return grade;
}

console.log(getGrade(27))


0 commentaires

1
votes

Vérifiez toujours la console. Il vous chante actuellement, vous indiquant que la note n'est pas définie.

Vous essayez de renvoyer quelque chose auquel vous n'avez pas attribué de valeur.

function getGrade(score) {
    let grade;
    if (score >= 25 && score <= 30) grade = 'A';
    else if (score >= 20 && score <= 25) grade = 'B';
    else if (score >= 15 && score <= 20) grade = 'C';
    else if (score >= 10 && score <= 15) grade = 'D';
    else if (score >= 5 && score <= 10) grade = 'E';
    else grade = 'F';
    console.log(grade);
    return grade;
}

Doit être

function getGrade(score) {
    // ... //
    return grade; //<-- nowhere do you define grade
}


2 commentaires

Merci beaucoup Monsieur, je l'ai maintenant.


De rien. Veuillez accepter l'une des réponses si vous la jugez correcte.