2015-12-16 49 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

相關問題