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

我在尝试将参数从一个函数发送到另一个函数时遇到问题,接收参数的函数使用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(); 
wenm2009 回答:JavaScript函数未将我的参数传递给其他函数

看看这个表情

2399 > x > 2200

并采用三个值,例如零,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

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

结论

进行两个与logical AND &&相关的比较:

2399 > x && x > 2200

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

function calculate(x) {
    switch (true) {
        case x >= 2400: return "Senior Master";
        case x >= 2200: return "National Master";
        case x >= 2000: return "Expert";
        case x >= 1800: return "Class A";
        case x >= 1600: return "Class B";
    }
    return "Error input not valid";
}

function display() {
    console.log("Your Rank is: " + calculate(2400));
}

display();

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

function calculate(x) {
    if (x >= 2400) return "Senior Master";
    if (x >= 2200) return "National Master";
    if (x >= 2000) return "Expert";
    if (x >= 1800) return "Class A";
    if (x >= 1600) return "Class B";
    return "Error input not valid";
}

function display() {
    console.log("Your Rank is: " + calculate(2400));
}

display();

,

首先,您必须将切换条件从1799 > x > 1600更改为1799 > x && x >= 1600

然后,您应该return "Expert"而不是使用case.logging本身登录,否则在displayxxx函数中的隐式实际上可以执行某些操作。

,

你能尝试这个吗?

function calculatexxx(x)  {

        if (x >= 2400){
            console.log("Senior Master");
           }
           else if (2399 > x > 2200){
            console.log("National Master");
        }
        else if (2199 > x> 2000){
            console.log("Expert");
           }
        else if (1999 > x> 1800){
            console.log("Class A");
            }
        else if (1799 > x> 1600):
            console.log("Class B");
            }
        else{
            console.log("Error input not valid");
            }/////////////

    return(x);

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

}
displayxxx(); 
本文链接:https://www.f2er.com/3143387.html

大家都在问