版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zdhsoft/article/details/89670901
从node 10.4就开始支持了,不过BigInt还是 stage 3 TC39 proposal,Stage 3意思是 proposal is ready and for browsers to start implementing。
有两种办法定义BigInt,一个是以n结尾的数字,一个是BigInt()方法。如下所示:
let t = 100n;
let t1 = BigInt('100');
let t2 = BigInt('0x64');
let t2 = BigInt(100);
//这几种方法,都可以定义BigInt
BigInt不是一个number,是有一个明确的类型 BigInt
现有的类型有:
- Boolean
- Null
- Undefined
- Number
- String
- Symbol
- BigInt -新类型
typeof 100n; // "bigint" 返回的是新类型
支持 ===、 !==、 ==、 !=、等运算符,
100n === 100n; //true
100n !== 101n; //true
100n === 100; //false 注意,第二个不是BigInt类型
100n == 100; //true 这个可以。
还有+、-、*、/、%,+=, -=,** 等运算符,要求两边都是BigInt类型,否则会报错。
还支持++,--运算符。
5n ** 3n;//可以
5n ** 3; //报错
5n + 3; //报错
5n + 3n; //可以
对于 > >=,<,<=,==,!= 运算符可以和数字进行比较
100n > 100; //false
100n >= 100; true
100n > 99; //true
//其它的比较运算符也可以
另外Math的方法,对BigInt是不支持的。
JSON.stringify也是不支持的,需要
BigInt.prototype.toJSON = function() { return this.toString(); };
后就可以支持。
toString方法是支持的,radix有效值是[2,36],默认是10.
最后补充一点,使用除法运算符,得到的是整数,不是浮点数
如:
100n/7n; //14n 得到的是14n,不是小数。
更多支持可以去https://node.green看看,下图是对BigInt的支持说明