代码之家  ›  专栏  ›  技术社区  ›  Nathan

在Javascript中,基于条件中断while循环的最干净的分支方式是什么?

  •  0
  • Nathan  · 技术社区  · 14 年前

    假设我有这个循环

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

    它可能会被4个条件中的任何一个变为false而破坏,我想根据它是哪个条件执行不同的代码。理想情况下,我不想对它们的评价超过我必须做的。假设 browseReddit() 迫使我们重新评估它们。

    在循环之后放置一个if链是我目前的做法。有更干净的方法吗?在你的回答中,最看重简洁。

    3 回复  |  直到 13 年前
        1
  •  2
  •   Ned Batchelder    14 年前
    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();
    }
    
        2
  •  1
  •   david    14 年前

    最终编辑:

    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/

        3
  •  0
  •   jcolebrand    14 年前

    我会按照您当前代码示例中的方式进行,这样您就不会免除测试所有四个退出案例。