天天看點

JavaScript中的==與===的差別

先看一個例子

alert(0 == "");

1

運作結果是啥?

回答是0==的同學真心可以洗洗睡了…

回答是false的同學還是很有必要繼續讀下去的…

答案是true,注意不是'true'也不是"true"。

OK,為啥呢,很簡單,JS中==會先轉換類型,然後再判斷值是否相等。

剛剛那個"“是字元串類型,而0是數字類型,是以先把”“轉換為數字類型,正好”"對應的數字類型為0,是以左右相等了,是以結果為true。

以下的情況也都是true,因為在判斷之前先轉換了類型。

0 == ""

0 == false

"" == false

1 == "1"

"1"==true

2

3

4

5

OK,那麼有時候啊,這種邏輯其實不大對。空字元串跟假有什麼關系呢?這種運算符也太不嚴謹了,哈哈,沒關系哦,JavaScript中還有一個強大的運算符**=,強大之處在于,===先判斷類型是否一樣,如果兩邊類型不同,直接就傳回false,如果類型相同的情況,在去判斷值,是以在大多數情況下,===才是我們想要的那個等于**。

例如:

1 == "1" // 判斷結果為真

1 === "1"// 判斷結果為假,因為一上來,類型就不同

是以需要對JavaScript類型加以了解,就能準确的判斷到底是真,還是假。

繼續閱讀