1

我有一个关于 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/and 语句中的任何一个中是否会出现类似于变量示例的问题?

4

2 回答 2

3

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

使用第二种写法,该else块仅在 时执行a !== b,而不是在a === b和时执行b !== c


忽略该else部分,您将使用不同的代码获得非常相似的性能,因为它们执行相同的操作。性能会因浏览器而异,甚至在同一浏览器的不同版本之间也会有所不同,因此即使您发现在大多数当前浏览器中通常有一种方法更快,但在不久的将来很可能会发生变化。

两种方法都运行良好,并且没有任何令人讨厌的性能问题,因此您应该简单地使用与代码意图最相似的一种。

于 2013-07-25T23:50:19.313 回答
1

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

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

于 2013-07-25T23:48:38.780 回答