es6最新數據類型 BigInt Symbol


Js中每一個值都屬於某一種數據類型, 根據最新的語言標准,一共有8種類型

  • Boolean

  • Null

  • Undefined

  • Number

  • BigInt

  • String

  • Symbol

  • Object

下面我來說一下新增的BigInt及Symbol

  首先來看張圖

  

  控制台敲出90099999999999992 == 90099999999999993 竟然等於true 90099999999999992 === 90099999999999993也等於true , 剛開始感覺刷新我的三觀

  經過度娘調查才知道

  此標准下,無法精確表示的非常大的整數將自動四舍五入。確切地說,JS 中的Number類型只能安全地表示-9007199254740991 (-(2^53-1))9007199254740991(2^53-1)之間的整數,任何超出此范圍的整數值都可能失去精度。

解決方法

  JS 提供Number.MAX_SAFE_INTEGER常量來表示 最大安全整數,Number.MIN_SAFE_INTEGER常量表示最小安全整數:

  或者就是使用新的數據類型BigInt  直接在數字后面加n即可

隱式類型轉換

  因為隱式類型轉換可能丟失信息,所以不允許在bigintNumber 之間進行混合操作。當混合使用大整數和浮點數時,結果值可能無法由BigIntNumber精確表示。比如:

  10 + 10n;    // → TypeError        10n > 5; // → true
  Math.max(2n, 4n, 6n);    // → TypeError       10 + Number(10n); // → 20

下面是symbol

  symbol是es6出的一種類型  本質上是一種唯一標識符,可用作對象的唯一屬性名,這樣其他人就不會改寫或覆蓋你設置的屬性值 如圖

   再次聲明相同key的symbol是會報錯

  Symbol 數據類型的另一特點是隱藏性,for···in,object.keys() 不能訪問

   let id = Symbol("id");
   let obj = {
    [id]:'symbol'
   };
   for(let option in obj){
       console.log(obj[option]); //空
   }

但是也可以用Object.getOwnPropertySymbol 方法會返回一個數組,成員是當前對象的所有用作屬性名的 Symbol 值。

官方提供了全局注冊並登記的方法:Symbol.for()  通過Symbol.keyFor()取值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM