如果condition是一个固定的条件,两者的效果是一样的,没有任何区别,所循环的次数都是n,但是我们普遍的想法是当if的条件condition与i无关,则将条件放在循环的外面,否则放在里面。

解决方案 »

  1.   

    晕 实际上是一样,执行的时候condition定了,只走一个case
    只是一的写法简单点
      

  2.   

    我想具体情况的时候,可能会有差别,
    -----------------
    ---------
    condition是定的
      

  3.   


    <script>
    var n=200000;
    var condition=true;
    var DoSomething=function(){};
    var d1=new Date();
            for (var i=0;i <n;i++) 
      { 
       if(condition) 
        DoSomething(); 
       else 
        DoOtherthing(); 
      } 
    var d2=new Date();
      if(condition) 
      { 
       for (var i=0;i <n;i++) 
        DoSomething() 
      } 
      else 
      { 
       for (var i=0;i <n;i++) 
        DoOtherthing(); 
      } 
    var d3=new Date();
    alert((d2-d1)+":"+(d3-d2));
    </script>
      

  4.   

    个人认为2比较好
    1走了n遍循环,n遍判断
    2走了n遍循环,1遍判断
    2的效率比较高一点点
      

  5.   

    测试了以下JK_10000 的程序,不太理解-------------------------
    确实如楼上各位所说,后者节省了n-1次判断
      

  6.   

    个人认为F2的优点比较大。 
    f1是先循环,后作判断。判断时,循环被打断。所以效率会较f2要低。
    f2是先判断,后循环。。效率比f1高。
      

  7.   

    pt1314917  背着灵魂漫步 个人认为F2的优点比较大。  
    f1是先循环,后作判断。判断时,循环被打断。所以效率会较f2要低。 
    f2是先判断,后循环。。效率比f1高。 
    ==============================
     循环被打断 虾米意思啊?
     
      

  8.   

    看编译器如何进行编译if,else,如果它是判断完IF后直接就跳到ELSE对应的语句中那没有区别,因为那样只走了一次判断。
    如果它是判断完IF后再判断ELSE那就是二效能更好一些,当然也是指这个执行的循环次数足够多的情况下。
      

  9.   

    2 的话先判断后循环.虽然表面上是2繁冗.其实2的效率高.并且从其他方面考虑2的功能更好些...
    如果DOSOMETHING会改变这个CONDITION的话...所以还是要看情况的..不过2就比1少了N-1 次判断.但是比1多了遍循环.在实际中没什么速度上的区别...论简洁的话当然是1了,可是2更适合实用.
     
    所以觉得2会好一点