Javascript Switch大小写不断返回NaN值

时间:2020-04-19 22:13:26

标签: javascript switch-statement arguments parameter-passing

我还是Java语言,switch语句和其他编程概念的新手。我的问题是,每当我尝试访问案例2时,它总是返回NaN而不是整数值或数字。我的参数在console.log()中无效吗?还是我使用switch语句不正确?

const constantVol = (num, T1, T2, P1, P2) => {
  let choice = num;
  switch(choice){
    case 1:
        choice = (T2 / T1) * P1;
        break;
    case 2:
        choice = (P2 * T1) / P1;
        break;
    default:
        choice = "Not valid"
        break;
  }
  return choice;
}

console.log(constantVol(num=2, P2=16.33, P1=3.4, T1=296.5));

3 个答案:

答案 0 :(得分:0)

因此我们在Javascript中没有命名参数,但是我们可以使用对象分解来模拟相似的语法。
我正在将名称作为一个参数的对象映射传递到函数{key:value}中,然后使用解构从属性中获取命名变量var [key] = value。

const constantVol = ({num, T1, T2, P1, P2}) => {
  let choice = num;
  switch(choice){
    case 1:
        choice = (T2 / T1) * P1;
        break;
    case 2:
        choice = (P2 * T1) / P1;
        break;
    default:
        choice = "Not valid"
        break;
  }
  return choice;
}

console.log(constantVol({num: 2, P2: 16.33, P1: 3.4, T1: 296.5}));

答案 1 :(得分:0)

调用函数时,您需要以正确的顺序将值发送到所有参数。在这里,constantVol函数期望有5个值,而您只发送4个值。此外,它们将按照传递的顺序进行读取,调用时是否添加变量都没有关系。 因此,当您致电

    constantVol = (num, T1, T2, P1, P2)

使用

    console.log(constantVol(num=2, P2=16.33, P1=3.4, T1=296.5));

您得到:

    num = 2 
    T1 = 16.33
    T2 = 3.4
    P1 = 296.5
    P2 = undefined

答案 2 :(得分:-1)

我对JacaScript也不太熟悉,但是 您的代码似乎没有为P2赋予价值?

但是我只是看到您想进行案例2。 但是,如果您进行数学运算,则会使用默认情况,因为结果不是2