• 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()取值

  • 相关阅读:
    Java NIO系列教程(六) 多路复用器Selector
    Java NIO系列教程(五)Buffer
    Java NIO系列教程(四) Scatter/Gather
    ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1498], [18713], [18720]
    统计单词出现的最多次数(Trie树)
    毁灭梦想的5个方法
    windows内核Api的学习
    android创建目录和文件和安装其它apk
    Java 遍历指定文件夹及子文件夹下的文件
    sqlplus的非交互式使用
  • 原文地址:https://www.cnblogs.com/tiepeng/p/11736328.html
Copyright © 2020-2023  润新知