我使用此代码输入数字,并使用小于和大于开关的情况下的数字进行比较以获取正确的结果,只有默认设置有效
var sum=prompt("enter sum:");
// sum=50;
switch(sum)
{
case sum=0:
alert("sucess");
break;
case sum>50:
alert("also sucess");
break;
case sum<50:
alert("failed");
default:
alert("there is errorrrr");
}
答案 0 :(得分:2)
您可以使用switch (true)
:
switch (true) {
case sum === 0:
alert('success');
break;
case sum < 50:
alert('also success');
break;
case sum > 50:
alert('failed');
break;
default:
alert('there is an error.')
break;
}
请注意,在您的代码中,第一种情况实际上是分配,并修改sum
以将其设置为0。
答案 1 :(得分:-1)
实际上,它不起作用,正如您期望的那样,将switch语句与所有情况进行比较,例如:
switch (something)
{
case 1: // something == 1 ?
// ....
}
实际上,您所写的内容被解释为
var sum = 42;
switch(sum)
{
case sum < 50: // sum == sum < 50 ? -> 42 == 42 < 50 ? -> 42 == true ? false !
// ...
相反,您可以使用switch true语句。
// v------- convert the prompt to a numeric value
let sum = + prompt("enter sum:");
switch(true)
{
// VV----- notice the double equal
case sum == 0: // true == sum == 0 ?
alert("sucess");
break;
case sum > 50:
alert("also sucess");
break;
case sum < 50:
alert("failed");
break; // <---- You forgot a break; there
default:
alert("there is errorrrr");
break;
}
答案 2 :(得分:-1)
您的想法很好
sum=20;
switch(true)
{
case 50:
alert("sucess");
break;
case (sum>50):
alert("also sucess");
break;
case sum<50:
alert("failed");
break;
default:
alert("there is errorrrr");
}