Какой самый чистый способ ветвления основан на том, какой условный цикл прервал цикл в Javascript?
Скажи, у меня есть этот цикл
while(condition1 && condition2 && condition3 && condition4){
browseReddit();
}
if (!condition1){}
if (!condition2){}
if (!condition3){}
if (!condition4){}
Это могло быть нарушено любым из 4 условий, становящихся ложными, и я хотел бы выполнить другой код, основанный на том, что это было. В идеале я не хотел бы оценивать их все больше, чем мне абсолютно необходимо. Предполагать browseReddit()
заставляет нас снова оценить их всех.
Помещение цепочки if после цикла - вот как я это делаю в настоящее время. Есть ли более чистый способ? Оцените краткость превыше всего в своем ответе.
3 ответа
Решение
while (1) {
stop = 0;
if (!condition1) {
// condition 1 code
stop = 1;
}
if (!condition2) {
// condition 2 code
stop = 1;
}
if (!condition3) {
// condition 3 code
stop = 1;
}
if (!condition4) {
// condition 4 code
stop = 1;
}
if (stop) {
break;
}
browseReddit();
}
Окончательное редактирование:
while((condition1||function(){alert("condition1 failed!");}()) &
(condition2||function(){alert("condition2 failed!");}()) &
(condition3||function(){alert("condition3 failed!");}()) &
(condition4||function(){alert("condition4 failed!");}())){
browseReddit();
}
jsfiddle: http://jsfiddle.net/ctrlfrk/HjftT/3/
Я хотел бы пойти тем же путем, что и в вашем текущем примере кода, чтобы вы не освобождали себя от тестирования всех четырех случаев выхода.