【发布时间】:2020-04-19 22:13:26
【问题描述】:
我还是 Javascript、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));
【问题讨论】:
-
P2 未定义。数学运算中的未定义返回 NaN
-
另外你不能在Javascript中使用命名参数
-
你传递了 4 个参数,所以第 5 个参数是未定义的
-
我只想指出,这个问题实际上可以帮助很多新手。尽管如果它的措辞更好。我敢肯定,有很多使用命名参数的语言的程序员会感到困惑,因为 Javascript 在其语法中提供了足够的灵活性,代码仍然可以运行,但没有保持其意图,因为(在这种情况下)命名参数不是Javascript 支持。
-
对于来自 Python 或任何具有命名参数的语言的人来说,这里发生的是
(num=2)===2(T1=296.5)===296.5,所以constantVol以P1===296.5和P2===undefined结尾(不是传递了一个值)。截至今天的 Javascript 没有命名参数。最接近命名参数语法的是对象解构。
标签: javascript switch-statement arguments parameter-passing