JavaScript函数未将我的参数传递给其他函数

ste*_*man 1 javascript function switch-statement

我在尝试将参数从一个函数发送到另一个函数时遇到问题,接收参数的函数使用switch语句对它求值并返回它,但它只会返回我输入的变量,而不是“例如“高级硕士”。这是我没有弄错的代码,请记住我对编码非常陌生,也许有人可以给我一些指针。提前致谢。

function calculatexxx(x)  {
    let calculatexxx= x;
    switch (x) {
        case (x >= 2400):
            console.log("Senior Master");
            break;
        case (2399 > x > 2200):
            console.log("National Master");
            break;
        case (2199 > x> 2000):
            console.log("Expert");
            break;
        case (1999 > x> 1800):
            console.log("Class A");
            break;
        case (1799 > x> 1600):
            console.log("Class B");
            break;
        default:
            console.log("Error input not valid");

    return(x);

    }
}
function displayxxx() {
    console.log("Your Rank is: " + calculatexxx(2400)); // 

}
displayxxx(); 
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 8

看看这个表情

2399 > x > 2200
Run Code Online (Sandbox Code Playgroud)

并采用三个值,例如零,2300(应返回true)和10000。

由于相同的运算符,因此按出现顺序执行表达式。

      x     2399 > x     value   value > 2200     yield     result
--------  ------------  -------  ------------  ----------  --------
      0   2399 >     0    true    true > 2200   1 > 2200     false
   2300   2399 >  2300    true    true > 2200   1 > 2200     false
 100000   2399 > 10000   false   false > 2200   0 > 2200     false
Run Code Online (Sandbox Code Playgroud)

最终结果始终是false,因为第一部分返回一个boolena值,并且此转换后的值永远不会大于最后一个值。

结论

进行两个与逻辑AND&&相联系的比较:

2399 > x && x > 2200
Run Code Online (Sandbox Code Playgroud)

对于switch陈述,您需要在条件部分中获取比较值,在其他情况下则需要获取比较值。通过直接返回,您可以省略break,因为函数以它结尾。

另一个解决方案是使用连续if语句并尽早返回。这种方法更好,因为它不会滥用select必须比较两个值的原始思想。

      x     2399 > x     value   value > 2200     yield     result
--------  ------------  -------  ------------  ----------  --------
      0   2399 >     0    true    true > 2200   1 > 2200     false
   2300   2399 >  2300    true    true > 2200   1 > 2200     false
 100000   2399 > 10000   false   false > 2200   0 > 2200     false
Run Code Online (Sandbox Code Playgroud)