我在尝试将参数从一个函数发送到另一个函数时遇到问题,接收参数的函数使用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();
只需看一下这个表达式
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();
首先,您必须将切换条件从1799 > x > 1600
更改为1799 > x && x >= 1600
然后您应该return "Expert"
而不是案例中的console.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();