1

以下哪种方法更高效、更快

  1. 嵌套条件

    if( a == b ) {
    
      if( b1 == c ) {
    
        if( c1 == d ) {
        }
    
      }
    
    }
    
  2. 逻辑表达式

    if( a==b && b1 == c && c1 == d) {
    }
    

一般来说,上述哪种方法更快,为什么?编写库时应该首选哪一个?我知道在第一种方法中,只有当上面的 if 语句结果为真时才会执行一个块。在第二种方法中,由于条件评估是从左到右的,它也会跳过下一个条件,如果前面的条件是假的..我是对的吗?

如果是这样,这两种方法之间是否有任何性能差异?

4

1 回答 1

5

我怀疑它们之间会有任何显着的性能差异,因为正如您所怀疑的那样,&&并且||JavaScript 中的短路(因此b == c如果a == b为 false 并被&&使用,则不会执行)并且 JavaScript 不必为输入做任何特定的管道块(因为它还没有块范围变量)。

但是这些事情因实施而异,真正了解的唯一方法是在您的目标引擎上进行测试,如果针对浏览器,可能使用http://jsperf.com之类的网站。


更重要的问题是:重要吗?与可读性、可维护性等相反。我想说可读性/可维护性/清晰度将大大胜过任何潜在的性能节省。

另请注意,如果您真的很喜欢这些东西,那么您可能希望在高级模式下使用诸如Closure Compiler之类的东西,它将对代码进行实际优化(它不仅仅是一个缩小器)。

于 2012-04-30T16:38:34.497 回答