JS中==、===你分清楚了嗎?

==、===都是相等運算符,這個你們應該都知道,但兩者有什麼區別呢?其實==是相等,===是嚴格相等,那他們有什麼本質的區別呢?下面我就給你們細細道來。ui

==相等

比較兩個值的時候,有兩種狀況,一種若是兩個值的類型相同,就直接比較;另外一種若是兩個值得類型不一樣,則會嘗試改變爲相同的類型在進行比較
第一種很好理解,直接比較完事兒,第二種就更有趣一些,它究竟是怎麼轉換的呢?下面咱們一一列舉code

數字和字符串比較

99 == ''99"

你們猜一猜結果是什麼True?False?對象

結果爲True

其實JS在數字和字符串比較時,都是把字符串轉換爲數字,再對數字進行比較的,舉個列子字符串

99 == "chuichui"

JS是怎麼轉換的呢?變量

99 == NaN  // false

JS嘗試轉換字符串'chuichui',可是該字符串並不能轉換爲數字,這時候轉換的結果就爲NaN分享

布爾值和其餘類型比較

其實JS在布爾值和其餘類型比較時,都是把布爾值轉換爲數字,再進行比較的,舉個列子co

1 == true
↓↓↓↓↓↓
1 == 1

JS會將true轉化爲數字1,再作比較
那"1" == true又是怎麼比較的呢?block

"1" == true
↓↓↓↓↓↓
"1" == 1
↓↓↓↓↓↓
1 == 1 // true

轉換順序字符

  1. 將true轉換爲1
  2. 將字符串「1」轉換爲數字1
  3. 數字1和數字1比較

null和undefined比較

null == undefined

你們猜一猜,結果是True?False?數字

結果爲True

是否是感受很奇怪,但規則就是這樣。咱們能夠理解爲都是「沒有值」
只不過一個是沒有值得變量,一個是沒有值的對象,所以他們類似

當心

有一個須要注意的地方,有些轉換你可能猝不及防

false == ""

True?False?

結果爲True
轉換過程
  1. false轉化爲0
  2. 空字符串""轉換爲0,沒錯就是0 !
  3. 數字0和數字0比較

下面咱們在說說嚴格相等 ===

===嚴格相等

有了前面的相等的定義,我想你們能猜個八九不離十,嚴格相等就是類型和值徹底相同,這裏不存在以上所存在的轉換問題

最後 🙌

好啦,以上就是我本次分享的所有內容啦,若是你以爲個人文章對你有一丟丟幫助,那麼請不要吝嗇你的贊👍哦,阿門~

相關文章
相關標籤/搜索