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)
看看这个表情
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,因为函数以它结尾。
2399 > x > 2200
Run Code Online (Sandbox Code Playgroud)
另一个解决方案是使用连续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)
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |