"原帖" :此功能应该比较' a'与其他几个值,但总是默认值。我的测试显示了' a'或者' b'永远不会改变。我有案例a>声明不正确或其他地方?
现在我明白我不能在案例陈述中使用比较:
我应该使用一堆if语句和一段时间(一个<> = 0)来进行多重检查和递减吗?
下面的snippit显示了' a'具有特定价值。在完整功能中,实际上' a'从另一个函数中的随机数中获取值。必须根据16个可能值进行检查并递减,然后重新检查,直到它最终达到0.比较值实际上是2的幂(1到16)。
function solution() {
var a = 18000;
var b = 0;
switch (a) {
case a > 30000:
a = a - 30000;
b = b++;
break;
case a > 16000:
b = b++; a = a - 16000;
break;
case a > 8000:
b = b++; a = a - 8000;
break;
default:
c = "defaulted!, Why?";
break;
}
window.alert (a + " " + b + " " + c);
}
答案 0 :(得分:2)
不要像这样使用开关进行范围检查。
是可能的switch (true) {
case (a > 30000):
a = a - 30000;
b = b++;
但是不要这样做。
使用if / else代替。虽然switch实际上只是一个抽象的if / else结构,但请将其用于以下内容:
switch(a){
case 1: ...
}
答案 1 :(得分:0)
简而言之,您不能在switch
案例标签中使用布尔表达式。您需要将代码重写为一系列if
语句。