在嵌套的if语句中调用break

Upv*_*ote 50 javascript

我有以下情况:

IF condition THEN  
    IF condition THEN 
        sequence 1
    ELSE
        break //?  
    ENDIF    
ELSE    
    sequence 3    
ENDIF
Run Code Online (Sandbox Code Playgroud)

break语句的结果是什么?它是否打破了外部的if语句?因为这是我真正需要的.

Dan*_*wis 126

如果标记if语句,则可以使用break.

breakme: if (condition) {
    // Do stuff

    if (condition2){
        // do stuff
    } else {
       break breakme;
    }

    // Do more stuff
}
Run Code Online (Sandbox Code Playgroud)

您甚至可以标记和破坏普通块.

breakme: {
    // Do stuff

    if (condition){
        // do stuff
    } else {
       break breakme;
    }

    // Do more stuff
}
Run Code Online (Sandbox Code Playgroud)

虽然它不是常用的模式,但可能会让人感到困惑,并且可能不会被编译器优化.使用函数并返回或更好地安排条件可能更好.

( function() {
   // Do stuff

   if ( condition1 ) {
       // Do stuff 
   } else {
       return;
   }

   // Do other stuff
}() );
Run Code Online (Sandbox Code Playgroud)

  • 今天我了解到你可以标记if语句 (51认同)
  • 令人惊讶的是,你刚刚教了我一些如此基础的东西,因为我已经用了将近两年的时间来编写语言。 (10认同)
  • 我很头疼,因为你的两个标签示例都不适合我(我以前从未使用过标签)。我对“breakbreakme:”行表示怀疑,然后……瞧!这是由于最后一个冒号。应该用分号代替(甚至任何东西)。 (3认同)

hvg*_*des 45

不,它没有.break是for循环,而不是ifs.

嵌套if语句很糟糕.如果可以避免它们,请避免使用它们.你可以重写代码吗?

if (c1 && c2) {
    //sequence 1
} else if (c3 && c2) {
   // sequence 3
}
Run Code Online (Sandbox Code Playgroud)

这样你就不需要任何控制逻辑来"突破"循环.