JS == 和 === 區別

  • ==,兩邊值類型不同的時候,要先進行類型轉換,再比較
  • ===,不做類型轉換,類型不同的一定不等

== 類型轉換過程:

  1. 如果類型不同,進行類型轉換
  2. 判斷比較的是否是 null 和 undefined, 如果是, 返回 true
  3. 判斷兩者類型是否爲 (string 或 boolean) 和 number, 如果是, 將字符串和布爾轉換成 number
  4. 判斷其中一方是否爲 object 且另一方爲 string、number 或者 symbol, 如果是, 將 object 轉爲原始類型再進行判斷

經典面試題:[] == ![] 爲什麼是true

轉化步驟:

  1. !運算符優先級最高,![]會被轉爲爲false,因此表達式變成了:[] == false
  2. 根據上面第(3)條規則,如果有一方是boolean,就把boolean轉爲number,因此表達式變成了:[] == 0
  3. 根據上面第(4)條規則,把數組轉爲原始類型,調用數組的toString()方法,[]轉爲空字符串,因此表達式變成了:'' == 0
  4. 根據上面第(3)條規則,兩邊數據類型爲string和number,把空字符串轉爲0,因此表達式變成了:0 == 0
  5. 兩邊數據類型相同,0==0爲true

 

 

 

 

 

發佈了122 篇原創文章 · 獲贊 87 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章