我在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 /和语句中是否会出现类似于变量示例的问题?
答案 0 :(得分:3)
您的表现问题没有实际意义,因为编写代码的不同方式会产生不同的结果。
使用第二种方式编写时,else
块仅在a !== b
时执行,而在a === b
和b !== c
时不执行。
忽略else
部分,你会得到与差异代码非常相似的表现,因为它们做同样的事情。浏览器之间的性能会有所不同,甚至在同一浏览器的不同版本之间也是如此,因此即使您发现大多数当前浏览器中的一种方法通常更快,但在不久的将来这种方法也会发生很大的变化。
这两种方法都运行良好,并且没有任何令人讨厌的性能问题,因此您应该使用最明显类似于代码意图的方法。
答案 1 :(得分:1)
您可以使用console.time('name')
和console.timeEnd('name')
来检查JS中的效果。
做了一个小提示演示:http://jsfiddle.net/bwYT7/