2015-04-02 8 views
0

原来这就是我现在所拥有的:最好的语法设置在一个循环中的全局布尔变量的函数在JavaScript

  var flag = false; 

      (function() { 
       for (var i = 0; i < 5; i += 1) { 
        // some code .... 
        // How can I rewrite the following? 
        if (!flag) { 
         flag = true; 
         // can't break 
        } 
       } 
      })(); 

      console.log(flag); 

http://jsfiddle.net/btc6wjw9/

我的目标是设置该标志为真时,函数执行。什么是相同或更好的性能更优雅的语法?

谢谢!

更新: 因为我已经了解到,改变一个布尔值比检查更快: http://jsfiddle.net/xq7n7bry/

+0

有趣的问题,让我们看看关于翻转开关的反馈。我认为,这将更多的是关于优雅而不是表现。顺便说一句,'i ++'至少少一个字符。 – Shikkediel 2015-04-02 03:16:42

+0

并且在这种情况下'if'语句之后你并不需要括号... – Shikkediel 2015-04-02 03:23:29

+2

我认为你已经为了该函数的目的明显地解释了太多带有注释的代码。如果您的目标是根据循环中的某些条件将标志设置为true,那么不需要'if(!flag)flag = true;',只需写入'flag = true;'而不是 – asimes 2015-04-02 03:38:59

回答

0
 var flag = false; 

     (function() { 
      for (var i = 0; i < 5; i += 1) { 
       // some code .... 
      } 
      flag = true; 
     })(); 

     console.log(flag); 

我真的不明白你的问题的观点,但如果你想设置当函数被调用时为true,只需在函数被调用时将其设置为true即可。

+0

也许我们可以忽略这个循环。我想我在问是否有更好的写作方式:if(!flag){flag = true;}。可能有其他函数将其设置为true。 – techguy2000 2015-04-02 04:30:21

+0

如果函数被调用,您的要求是设置flag = true。如果其他函数也将它设置为true,为什么它很重要?这就像你可以做到的一样简单和干净。 – Yatrix 2015-04-02 19:34:00

+0

没错,但我不想在每次函数调用时都将true标志重置为true,因此检查if(!标志)是否对性能没有帮助? – techguy2000 2015-04-03 04:30:27

-1

一种方式重写:

if (!flag) {flag = true;} 

flag = (!flag ? true: flag); 

这不一定更好,作为一个作业将在每次迭代进行。

+0

这里没有优势,不妨写'flag = true;' – asimes 2015-04-02 05:12:26

+0

@asimes这就是我所说的......'这不一定更好,因为每次迭代都会进行赋值'我只是展示了另一种重写if语句的方法......真的是投票结果? ?? – 2015-04-02 05:16:43

+0

是的,反对票。你把他的代码效率低下,并以同样低效的方式编写它。他问如何让它变得更好,那不是他所要求的 – asimes 2015-04-02 05:18:46

相关问题