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

问题描述 投票:1回答:3

我在尝试将参数从一个函数发送到另一个函数时遇到问题,接收参数的函数使用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(); 
javascript function switch-statement
3个回答
6
投票

只需看一下这个表达式

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

对于采用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();

0
投票

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

然后您应该return "Expert"而不是案例中的console.logging,这样在displayxxx函数中的隐式实际上可以执行某些操作。


0
投票

您可以尝试这个吗?

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(); 
© www.soinside.com 2019 - 2024. All rights reserved.