如何在函数中的 switch case 中分配新值?

her*_*o04 4 javascript syntax switch-statement

目前正在编写一个将数字等级转换为美国系统的函数。基本上结果应该是这样的:

你得了 D (60%)!

但我明白了:

你得了 60 60%!

除了括号之外,我还应该做什么才能使它看起来尽可能像?

代码如下:

function gradeConverting(grade) {
    let gradePercent = grade + "%";
    switch (grade) {
        case (90 < grade && grade <= 100):
            grade = "A";
            break;
        case (80 < grade && grade <= 89):
            grade = "B";
            break;
        case (70 < grade && grade <= 79):
            grade = "C";
            break;
        case (60 <= grade && grade <= 69):
            grade = "D";
            break;
        case (50 <= grade && grade <= 59):
            grade = "E";
            break;
        case (grade <= 49):
            grade = "F";
            break;
    }
    return console.log("You got a " + grade + " " + gradePercent + "!");
}

gradeConverting(55);
Run Code Online (Sandbox Code Playgroud)

Yun*_*hai 8

您的代码逻辑完全有效,但您使用的switch()方式错误。

检查有关的文档:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch

如果你输入switch(grade)thensomethingcase something期望value匹配grade而不是expression返回true|false

例如:

switch (grade) {
        case 90: // only for grade === 90
            grade = "A";
            break;
        case 55: // only for grade === 55
        ...
Run Code Online (Sandbox Code Playgroud)

事实上,你可以有一个包含多个语句的函数,if然后返回lettergrade。或者仍然使用当前的逻辑进行一些修改并仍然使用switch().

我创建了另一个变量lettergrade,建议不要修改grade,除非您知道自己要做什么。

switch (grade) {
        case 90: // only for grade === 90
            grade = "A";
            break;
        case 55: // only for grade === 55
        ...
Run Code Online (Sandbox Code Playgroud)