-2

我只是好奇..不同版本的条件语句之间的性能有何不同?

即:

if ( x == false) //doSomething

if ( x === false ) //doSomething

if ( !x ) //doSomething

!x && //doSomething

就个人而言,我更喜欢使用第三个,因为它比其他三个短很多。但我有点怀疑我是否没有意识到“可能的”性能缺陷。即使只是毫秒的差异,对我来说也很重要。

谢谢!

4

2 回答 2

3

我不会像 Ted 那样深入研究语句之间的功能差异,但您可以随时在http://www.jsperf.com上检查您的 JS 性能

这是你的:http: //jsperf.com/ifperf

于 2013-04-29T06:47:26.367 回答
2

这四种变体具有不同的语义和/或句法约束。

if ( x == false) //doSomething
if ( !x ) //doSomething

这两个是等价的,doSomething如果x是任何“虚假”值—— false, 0, undefined, null, NaN, 或空字符串。我怀疑解析后是否会有任何性能差异。

if ( x === false) //doSomething

这将doSomething只有当x正是false。如果x是任何其他“虚假”值(或任何“真实”值)则doSomething不会执行。由于没有发生类型转换,因此可能会有轻微的性能提升。

!x && //doSomething

这或多或少等同于前两个,但doSomething仅限于表达式。我希望性能像前两个一样。

于 2013-04-29T06:39:10.443 回答