继续ALLWAYS在JS中切换非法但是中断工作正常

时间:2013-08-06 09:20:58

标签: javascript windows google-chrome loops switch-statement

switch ("B")
{
case "A":
    break;
case "B":
    continue;
case "C":
    break;
default:
    break;
}

C ++中的简单正确代码,但是当在javascript中使用稳定的chrome时,它只会抛出错误“非法继续语句”,看起来像在javascript中切换时不允许继续语句...听说返回但它只是返回并且不继续......那么有没有办法继续在js中切换?

6 个答案:

答案 0 :(得分:11)

continueswitch es完全无关,不在Javascript and not in C++中:

int main()
{
    int x = 5, y = 0;
    switch (x) {
        case 1:
            continue;
        case 2:
            break;
        default:
            y = 4;
    }
}
  

错误:不在循环中继续语句

如果您希望摆脱此案,请使用break;否则,允许案件通过:

switch ("B")
{
    case "A":
        break;
    case "B":
    case "C":
        break;
    default:
        break;
}

如果您正在寻找快捷方式 到下一个案例,那么,不,你不能这样做。

switch ("B")
{
    case "A":
        break;
    case "B":
        if (something) {
           continue; // nope, sorry, can't do this; use an else
        }

        // lots of code
    case "C":
        break;
    default:
        break;
}

答案 1 :(得分:9)

我相信你可以通过使用标记的无限循环模仿你想要的东西:

var a = "B";
loop: while( true ) {
    switch (a)
    {
    case "A":
        break loop;
    case "B":
        a = "C";
        continue loop;
    case "C":
        break loop;
    default:
        break loop;
    }
}

否则你应该考虑以其他方式表达你想要的东西。

即使你可以取消它,这将是一个巨大的WTF。只要使用if else。

答案 2 :(得分:3)

我认为你的意思是:

switch ("B")
{
    case "A":
        break;
    case "B":
    case "C":
        break;
    default:
        break;
}

不需要continue。当B来的时候,它会转移到C.

答案 3 :(得分:0)

没有break语句的switch case将“通过”(因为它被调用)到下一个。省略break将使代码的行为与您所说的一样,因为它是switch语句的默认/隐式行为。

continue语句的使用是为循环保留的,它的作用实际上与你想要的略有不同;它将打破循环的当前迭代并继续下一个循环,重新评估循环条件。

答案 4 :(得分:0)

实际上,您可以在循环内切换中使用它,在这种情况下,break / continue是一个有用的组合

看看这个例子

var array = [1, 2, "I am a string", function(){}, {}, 1,2,3]
for(let i in array){
    switch(typeof array[i]) {
    case "number":
        array[i] += " I was a number"
        break; // break from the switch but go on in the for-loop
               // ie. go to *put esclamation mark*
    case "function":
        array[i] = "function"
        // fall through
    default:
        array[i] = `this is a ${JSON.stringify(array[i])} object`
        break; // also here goes to *put esclamation mark*
    case "string":
        continue; // continue with the next iteration of the loop
                  // ie. do not put exclamation mark in this case
    }
    array[i] += "!" // *put esclamation mark*
}
/*
array will become
[ "1 I was a number!", "2 I was a number!", "I am a string", "this is a \"function\" object!", "this is a {} object!", "1 I was a number!", "2 I was a number!", "3 I was a number!" ]
*/

答案 5 :(得分:-1)

继续可能只涉及循环。 它不能在switch语句中使用。 无论如何,你对它有什么期望?