【问题标题】:JavaScript if statement optimizationJavaScript if 语句优化
【发布时间】:2015-02-20 01:30:24
【问题描述】:

我有以下代码:

      function() {
         if (foo && foo.bar !== baz) { //needed because foo can be undefined, so foo.bar always returns value
            function1()
            return;
         }

         if (foo) {
            function2()
         } else {
            function1()
         }
      }

我想知道,从代码结构的角度来看,优化这些 if 语句的最佳方法是什么。

感谢大家的回答!

【问题讨论】:

  • 这属于Code Review
  • 试试foo && foo.baz === baz ? function2() : function1()
  • 过早的优化是万恶之源。除非您的分析确定它是瓶颈,否则不要在这上面浪费时间。
  • 能否请您删除它。我的错!
  • @Mathletics 这是示例代码,将作为代码审查的题外话关闭。

标签: javascript performance optimization


【解决方案1】:

这可以转换成单行:

foo && foo.baz === baz ? function2() : function1();

如果foo 为假,那么它将执行function1,如果foo 为真但foo.baz !== baz,那么它仍将执行function1。否则会执行function2

之所以有效,是因为如果foo 是真实的并且foo.baz !== bazfalse,那么function2 只有在foo.baz === baztrue 时才会执行。

【讨论】:

    【解决方案2】:

    可能是:

    if ((foo && foo.bar !== baz) || !foo) {
      function1();
    } else {
      function2();
    }
    

    【讨论】:

      【解决方案3】:
      ((foo && foo.bar !== baz) || !foo) ? funtion1() : function2());
      

      【讨论】:

        【解决方案4】:

        一个例子可以是:

        if (!foo || foo.bar !== baz) {
          function1();
        } else {
          function2();
        }
        

        类似于 kamituel 的,但更短,并且可能更易于阅读。

        【讨论】:

        • 哦,是的,我实际上没有注意到 ;) +1
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-10
        • 2011-05-18
        • 2010-09-07
        • 2013-09-17
        • 2017-06-16
        • 1970-01-01
        相关资源
        最近更新 更多