2015-12-16 52 views
0

在JavaScript中使用“严格模式”时,在比较if语句中的值时应使用===。然而,随着truthy/falsy值打交道时,这可能会导致很长的if语句:在JavaScript中使用Double Equals会导致性能问题吗?

if (a !== null && a !== undefined && a !== '' && a !== 0) {}

要解决这个问题,我已经使用!!

if(!!a === true) {}

到开始将该值作为布尔值进行转换。但是,我担心会对性能产生影响。根据我的JSPerf(http://jsperf.com/double-exclamation-vs-falsy/4),这种方法比if语句的长格式慢30%。

我的基地在这里吗?有没有人注意到性能受到影响?

+2

很少需要对“true”或“false”进行明确比较。只是“如果(a)'会做到这一点。 – Pointy

+1

如果使用'!!',那么就不需要'=== true'或'=== false' –

+0

@PatrickEvans,如果你不做比较,也不需要'!!'。 – Pointy

回答

0

使用if(!!a) {确实会造成显着的性能下降,因为您正在进行相同的布尔转换,当您执行if(a)时,JS会在内部执行相同的布尔转换。明确类型检查的性能更高,如if(a === true)if(a !== null && a !== undefined)

+0

'if(a!= null)'*与* if(a!== null && a!== undefined)完全相同,因为它是值得的。 – Pointy

相关问题