如何将此if语句转换为switch case?我试图像这样声明变量:
myAge = parseFloat(prompt("Enter you age: "));
if(myAge <18) {
alert("You cant not vote at this " +myAge);
} else if (myAge >18) {
alert("Vote wisely, you are " +myAge "years old!");
} else {
alert("Invalid age");
}
答案 0 :(得分:1)
回答你的“如何将其转换为切换”问题,你可以实现一个功能,使得 C风格的比较并返回-1,0或1 作为比较的结果。
以下示例使用setInterval
来模拟多个不同的案例。
这仅用于示例。
function compareTo(a, b) {
if (a < b)
return -1;
if (a > b)
return 1;
return 0;
}
function EvaluateAge() {
// Generate a random age between 10 and 40
var myAge = Math.floor((Math.random() * 30) + 10);
switch (compareTo(myAge, 18)) {
case -1:
console.log(myAge, " less than 18");
break;
case 0:
console.log(myAge, " equal to 18");
break;
case 1:
console.log(myAge, "more than 18");
break;
}
}
// Example only
setInterval(EvaluateAge, 1000);
另一种方法是使用JS switch
能力在switch-condition 中使用 true
:
var myAge = 16;
switch (true) {
case myAge < 18:
console.log("less than 18");
break;
case myAge === 18:
console.log("equal to 18");
break;
case myAge > 18:
console.log("more than 18");
break;
}
然而,它看起来不太好,避免这种用法是个好主意。
实际上,您的if
看起来不错,并且您不需要将其转换为switch
- 它不会提高代码的可读性/可维护性。
答案 1 :(得分:1)
如果年龄 如果年龄&gt; = 18,你可以在这个年龄投票。 其他无效年龄。
&#13;
var myAge = parseFloat(prompt("Enter you age: "));
switch (true) {
case myAge < 18:
alert("You cant not vote at this " + myAge);
break;
case myAge >= 18:
alert("Vote wisely, you are " + myAge + " years old!");
break;
default:
alert("Invalid age");
}
答案 2 :(得分:0)
不确定你为什么要这样做而不是简洁的if语句,但你可以这样:
var myAge = parseFloat(prompt("Enter you age: "));
switch (true) {
case myAge < 18:
alert("You cant not vote at this " + myAge);
break;
case myAge > 18:
alert("Vote wisely, you are " + myAge + " years old!");
break;
default:
alert("Invalid age");
}
&#13;
请注意,您没有捕获18
的值,我只是假设它是有意的但值得指出给您,而且,您错过了+
连接您的第二个警告所以你原来的例子甚至都没有执行过。