如果是JavaScript中的/和/ if语句

时间:2013-07-25 23:43:50

标签: javascript jquery performance syntax

我在javascript代码中有一个关于性能的快速问题。例如,假设我有一个带参数的函数和一些if语句:

function myFunction(a,b,c) {
    if(condition) {
        //execute
    } else { 
        //execute
    }
}

在这种特殊情况下,我需要比较if语句中的多个条件。根据我的理解,有两种方法可以做到这一点:

function myFunction(a,b,c) {
    if(a === b && b === c) {
        //execute
    } else { 
        //execute
    }
}

或:

function myFunction(a,b,c) {
    if (a === b) {
      if (b === c) {
        //execute
    } else {
        //execute
    }
}
}

我的问题是,基于性能,哪个更好用。澄清:这个问题基于固执的答案,严格基于问题,是否存在使用其中一个可能出现的问题?例如,您没有使用var关键字 来声明变量,但是如果不这样做,可能会出现问题(在同名的全局变量和局部变量之间)。在这两个if /和语句中是否会出现类似于变量示例的问题?

2 个答案:

答案 0 :(得分:3)

您的表现问题没有实际意义,因为编写代码的不同方式会产生不同的结果。

使用第二种方式编写时,else块仅在a !== b时执行,而在a === bb !== c时不执行。


忽略else部分,你会得到与差异代码非常相似的表现,因为它们做同样的事情。浏览器之间的性能会有所不同,甚至在同一浏览器的不同版本之间也是如此,因此即使您发现大多数当前浏览器中的一种方法通常更快,但在不久的将来这种方法也会发生很大的变化。

这两种方法都运行良好,并且没有任何令人讨厌的性能问题,因此您应该使用最明显类似于代码意图的方法。

答案 1 :(得分:1)

您可以使用console.time('name')console.timeEnd('name')来检查JS中的效果。

做了一个小提示演示:http://jsfiddle.net/bwYT7/