我只是好奇..不同版本的条件语句之间的性能有何不同?
即:
if ( x == false) //doSomething
if ( x === false ) //doSomething
if ( !x ) //doSomething
!x && //doSomething
就个人而言,我更喜欢使用第三个,因为它比其他三个短很多。但我有点怀疑我是否没有意识到“可能的”性能缺陷。即使只是毫秒的差异,对我来说也很重要。
谢谢!
我只是好奇..不同版本的条件语句之间的性能有何不同?
即:
if ( x == false) //doSomething
if ( x === false ) //doSomething
if ( !x ) //doSomething
!x && //doSomething
就个人而言,我更喜欢使用第三个,因为它比其他三个短很多。但我有点怀疑我是否没有意识到“可能的”性能缺陷。即使只是毫秒的差异,对我来说也很重要。
谢谢!
我不会像 Ted 那样深入研究语句之间的功能差异,但您可以随时在http://www.jsperf.com上检查您的 JS 性能
这是你的:http: //jsperf.com/ifperf
这四种变体具有不同的语义和/或句法约束。
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
仅限于表达式。我希望性能像前两个一样。