iT邦幫忙

2024 iThome 鐵人賽

DAY 17
1
佛心分享-IT 人自學之術

菜雞學習JavaScript的30日讀書分享系列 第 17

菜雞學習JavaScript的30日讀書分享【Day 17】自動轉型-上

  • 分享至 

  • xImage
  •  

====================本系列文章沒有什麼高深的理論====================
====================純粹是以一個菜雞的視角來分享====================

自動轉型(Type Coercion)

兩個等號(==)的比較運算式下,若是雙方的資料類型不同時,則會進行「自動轉型」,那麼今天就來說說自動轉型的規則。

  • 如果其中一個值為布林值的情況下,會將true轉為「數字」的1,如果是false則會變成「數字」的0
  • 假如遇到字串與數字做比較的情況下,則會將字串透過Number()嘗試轉型為數字後,才進行比較。
  • 如果其中一方是「物件」型別,若另一方是基本型別的情況下,則會先透過物件的valueOf()取得對應的基本型別的值,才進行比較。
  • 還有前面所提到的NaN不等於NaN,這個在兩個等號或是三個等號的結果都是相同的。
  • 或是兩個物件進行比較時,則要看兩者是否指向同一個「實體」,只有在指向同一個「實體」時才會回傳true
false == 0 // true
true == 0 // true

[] == [] // false
[] == ![] // true

三個等號(===)兩個等號(==),雖然都是比較的意思,但很多人以為只有三個等號(===)會檢查型別,而兩個等號(==)不會檢查型別,但其實並不是這樣,而是三個等號(===)「不會」對數值做自動轉型,兩個等號(==)「會」做自動轉型。

今日的分享就到這囉,我們明天見,掰掰!


上一篇
菜雞學習JavaScript的30日讀書分享【Day 16】比較運算子
下一篇
菜雞學習JavaScript的30日讀書分享【Day 18】自動轉型-下
系列文
菜雞學習JavaScript的30日讀書分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言