es10 JS数据类型 bigint

731 阅读1分钟

bigint 是在 2020年 提案正式完成(stage 4),新增的一个js内置对象。

bigint 是 es6 之后的 第7个原始类型

bignt 可以表示任意大的数,不用担心丢失精度的问题

与Number类型的区别

  • 声明的方式不同

  • 直接声明:在整数字面量后边加一个字符"n"。例如:let nnn = 9007199254740991n;

  • 调用函数声明:不是一个构造函数,不用new,直接声明调用BigInt函数聚客 例如:let nnn = BigInt(9007199254740991)

  • 不能使用 Math 对象的方法

  • 不能和任何Number 数据类型 进行混合运算,否则会报错。(如果要进行运算必须转为同一个数据类型,BigInt转number 可能会丢失精度)

与Number类型的相同点

  1. 在if判断里的隐式转换都是一样的

代码

// 声明
let nn = BigInt(Number.MAX_SAFE_INTEGER);
let n1 = 9007199254740991n;
let n2 = 0.3n // -> 报错,不能声明小数

// 与number类型进行运算 
nn+1  // -> 报错
nn+0.1 // -> 报错

// 与BigInt 类型进行运算
nn+1n // -> 9007199254740992n;
nn+2n // -> 9007199254740993n

// 比较 
1n == 1 // -> true , 宽松判断是相等的
1n === 1 // -> false , 严格判断不想等

// 隐式转换 , 和 number类型一样
!!1n // -> true 
!!0n // -> false