1. 程式人生 > >JS數據類型的轉換規則

JS數據類型的轉換規則

優先 source null 行數據 ges 有一個 defined 左右 blog

數據類型轉換的規則

  • 1 如果只有一個值,判斷這個值是真還是假,遵循只有0,NaN,‘‘,null,undefined這五個是假的,其余的都是真
  • 2 如果是兩個值比較是否相等,遵循以下規則:
    • ![]->false
    • []==[]->false
    • //val==val 兩個值可能不是同一個數據類型的,如果是兩個等於號比較的話,會默認的進行數據類型轉換
    • 規則:
      • 1 對象==對象 永遠不相等
      • 2 對象==字符串
        • 先將對象轉換成字符串(調用toString的方法),然後再進行比較
          • []空數組轉化為字符串是‘‘
          • {}轉化為字符串"[object,objec]"
      • 3 對象==布爾類型
        • 對象先轉化字符串(toString方法),然後再把字符串轉化為數字(Number,""空字符串為0) ,布爾類型也轉化為數字(true是1,false是0),最後讓兩個數字比較[]==false->true
      • 4 對象==數字
        • 先將字符串轉化為字符串(toString), 然後把字符串再轉化為數字(Number),然後再進行比較
      • 5 數字==布爾
        • 將布爾轉化為數字
      • 6 數字==字符串
        • 字符串轉化為數字
      • 7 字符串==布爾
        • 都轉化為數字
      • 8 null==undefined 結果為true;
      • 9 null或者undefined 和其他任何的數據類型比較都不相等
  • 3 除了==是比較,===也是比較(絕對比較)
    • val === val2 比較的是數據類型,如果數據類型不一樣肯定不相等

===============================================================================================================================

技術分享

兩個值進行比較,如果數據類型不一樣的話,會進行默認的數據類型轉換

->對象 == 對象:比較的是各自代表的內存地址,地址相同則相等,地址不同則不相等

->對象 == 數字:先把對象toString,然後把結果再Number,最後和數字比較

->對象 == 字符串:先把對象toString,然後再比較

->對象 == 布爾:都轉換成數字

技術分享

->字符串 == 數字:字符串轉換成數字

->字符串 == 布爾:都轉換成數字

->布爾 == 數字 :布爾轉換成數字

->null == undefined是相等的,它們和自身也是相等的,除此之外和其他任何值都不想等

->NaN == NaN是不相等的

把一個值轉化成布爾類型:!、!!、Boolean、if(num)條件的意思也是先把num轉換成布爾值驗證真假

->只有‘‘、0、NaN、null、undefined代表false,其余的都是true

![] == false:兩個==判斷的優先級是最低的,它肯定是先把左右兩邊的表達式執行,執行的結果再進行比較

![]轉換成布爾再取反 ->false =>true

JS數據類型的轉換規則