0

说我有这个循环

while(condition1 && condition2 && condition3 && condition4){
     browseReddit();
}

if (!condition1){}
if (!condition2){}
if (!condition3){}
if (!condition4){}

它可能会被 4 个条件中的任何一个变为假而被打破,我想根据它是哪个来执行不同的代码。理想情况下,我不想比我绝对必须的更多地评估它们。假设browseReddit()迫使我们再次评估它们。

在循环之后放置一个 if 链是我目前的做法。有没有更清洁的方法?在您的回答中,重视简洁高于一切。

4

3 回答 3

2
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();
}
于 2010-11-19T03:24:12.230 回答
1

最终编辑:

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/

于 2010-11-19T03:40:21.440 回答
0

我会采用您当前代码示例中的方式,这样您就不会免除自己测试所有四个退出案例。

于 2010-11-19T03:31:31.197 回答