Подтвердить что ты не робот

Перерыв вызова во вложенных операторах if

У меня следующая ситуация:

IF condition THEN  
    IF condition THEN 
        sequence 1
    ELSE
        break //?  
    ENDIF    
ELSE    
    sequence 3    
ENDIF

Каков результат выражения break? Разве это нарушает внешний оператор if? Потому что это то, что мне действительно нужно.

4b9b3361

Ответ 1

нет. break - для циклов, а не ifs.

вложенные, если утверждения просто ужасны. Если вы можете избежать их, избегайте их. Можете ли вы переписать свой код как нечто вроде

if (c1 && c2) {
    //sequence 1
} else if (c3 && c2) {
   // sequence 3
}

таким образом вам не нужна какая-либо логика управления, чтобы "вырваться" из цикла.

Ответ 2

Если вы помечаете оператор if, вы можете использовать break.

breakme: if (condition) {
    // Do stuff

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

    // Do more stuff
}

Вы можете даже маркировать и разбивать простые блоки.

breakme: {
    // Do stuff

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

    // Do more stuff
}

Это не часто используемый шаблон, так что может смутить людей и, возможно, не будет оптимизирован со стороны compliers. Возможно, лучше использовать функцию и вернуться или лучше расположить условия.

( function() {
   // Do stuff

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

   // Do other stuff
}() );

Ответ 3

В большинстве языков break выполняет только отмену циклов, таких как, while и т.д.

Ответ 4

Javascript генерирует исключение, если вы попытаетесь использовать оператор break; внутри if if else. Он используется в основном для петель. Вы можете "вырваться" из инструкции if else с условием, в котором нет смысла включать оператор "break".

JSFiddle

Ответ 5

На самом деле в исходном вопросе нет кода c3. Итак, если бы было более правильно

if (c1 && c2) {
    //sequence 1
} else if (!c1 && !c2) {
   // sequence 3
}

Ответ 6

Вам нужно, чтобы он нарушил внешний оператор if. Почему вы используете второй вариант?

IF condition THEN  
    IF condition THEN 
        sequence 1
    // ELSE sequence 4
       // break //?  
    // ENDIF    
ELSE    
    sequence 3    
ENDIF

sequence 4