2012-08-08 57 views
8

可能重複:
JavaScript === vs == : Does it matter which 「equal」 operator I use?是否有必要使用===來比較Javascript中的字符串或者==是否足夠?

我可以理解爲什麼===比較數字,布爾值,空字符串,等等的時候是必要的,因爲意外的類型轉換如

var foo = 1; 
var bar = true; 
// bar == foo => true 
// bar === foo => false 

但一個變量與一個非空字符串文字時可以==曾經介紹一個錯誤?在這種情況下,使用==而不是===更有效嗎?

+0

http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/ – diEcho 2012-08-08 13:15:21

+0

類型相等應該相同或更快:http://stackoverflow.com/a/359509/453277 – 2012-08-08 13:16:17

+0

等號運算符('===')。它檢查值是相同的值和相同的類型。記住這一點。 – diEcho 2012-08-08 13:17:00

回答

7

這裏已經有很多這方面的問題,所以我只是讓一個更好的海報,然後我自己回答。

到這裏看看:http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html

3個等號的意思是「沒有強制類型轉換平等」。使用三元等值,這些值的類型也必須相同。

 
0==false // true 
0===false // false, because they are of a different type 
1=="1"  // true, auto type coercion 
1==="1" // false, because they are of a different type 

Difference between == and === in JavaScript

1

那麼,我有點自己回答... 5 ==「5」,但5!==「5」,這可能是意想不到的。我會把任何有更深刻見解的人都歸功於他。

+0

那就是答案... – DerWaldschrat 2012-08-08 13:14:58

4

這是一個很好的做法總是使用身份符(!=====)並手動執行類型強制僅當需要(例如Boolean(someVar)Number(someVar))。

A fun fiddle

0

「==」在比較完成之前進行類型轉換。這就是爲什麼5 ==「5」是真實的而不是錯誤的原因。

「===」不是這種轉換,所以5 ===「5」不一樣,只要類型不一樣。

相關問題