Перерыв вызова во вложенных операторах if
У меня следующая ситуация:
IF condition THEN
IF condition THEN
sequence 1
ELSE
break //?
ENDIF
ELSE
sequence 3
ENDIF
Каков результат выражения break? Разве это нарушает внешний оператор if? Потому что это то, что мне действительно нужно.
Ответы
Ответ 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