switch语句中的数字比较失败

时间:2015-02-21 18:52:26

标签: javascript

"原帖" :此功能应该比较' 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); 
    }           

2 个答案:

答案 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语句。