1. 程式人生 > 實用技巧 >Base64 編碼與解碼詳解

Base64 編碼與解碼詳解

  • 基本資料型別:Number、String、Boolean、null、undefined、Symbol

  • 引用資料型別:object其中包含array、data、function等等

  • 涉及知識點:

    • 裝箱和拆箱 let str = new String('string')

    • typeof

      結果
      undefined undefined
      'string' (字串型別) string
      123、NaN number
      true,false boolean
      let a = Symbol('a') symbol
      {}、[]、null等 object
      function () {} function
    • undefined 和 null

      • null 表示這個值被定義了,但這個值為空,undefined 表示原本此位置該有值,但現在此值未定義
      • 兩者在 if 判斷語句中,都會被轉換為false
      • undefined派生自null,因此在用 == 判斷時為 ture
      • undefined 表示未定義,而 null 則未空
      • 在 Number 中的轉換值不同,Number(null)的值未0,而Number(undefined) 的值為NaN
      • typeof(undefined) 的值為 undefined 而typeof(null) 的值為 object
    • NaN

      • 含意為 Not a number,用來檢測是否為數字
      • NaN並不等於自身,如 Number(test`)==NaN 值為false
      • isNaN() 用來判斷該值是否為 NaN,還可以使用 Object.is(NaN,NaN)
      • typeof 的值為 number
    • 0.1+0.2 結果不為0.3

      • 原因,基於IEEE754數值的浮點計算的通病。
      • 解決方法,可以使用其他方式進行判斷,如(0.1*10+0.2*10)/10 == 0.3或者可以使用Number.EPSILON 來進行判斷 0.1+0.2-0.3<Number.EPSILON
    • 陣列檢測方法

      • instanceof 判斷是否在一條原型鏈上 arr instanceof Array
      • constructor 屬性進行判斷 arr.constructor == Array
      • Array.isArray 檢測是否為陣列
      • typeof 也可以進行判斷,只不過麻煩一點 typeof arr.__proto__.push == function() 用typeof判斷例項的原型中是否有 Array 的方法,如果有,就為陣列
    • == 和 ===

      • 雙等表示值相同,型別可以不同,===表示型別也必須相同
    • Object 的知識點過於多,建議尋找更系統的資料檢視

    • BigInt 型別:是一種內建物件,可以表示大於 253 的整數。而在Javascript中,Number 基本型別可以精確表示的最大整數是 253。BigInt 可以表示任意大的整數。在MDN中被歸為基本資料型別