JS 最新数据类型:BigInt

在 JS 中,存在着 7 种原始值,分别是:

boolean

null

undefined

number

string

symbol

bigint

什么是BigInt?

BigInt是一种新的数据类型,用于当整数值大于Number数据类型支持的范围时。这种数据类型允许我们安全地对大整数执行算术操作,表示高分辨率的时间戳,使用大整数id,等等,而不需要使用库。

例如:

console.log(999999999999999);  //=>10000000000000000


js中number类型只能安全的表示-9007199254740991(-(2^53-1))和9007199254740991((2^53-1)) 任何超出此范围的整数值都可能失去精度。

使用BigInt

1.要创建BigInt,只需要在数字末尾追加n即可。

console.log( 9007199254740995n );    // → 9007199254740995n

console.log( 9007199254740995 );    // → 9007199254740996

2.创建BigInt的方法是用BigInt()构造函数

BigInt("9007199254740995");    // → 9007199254740995n

其他使用方式:

10n + 20n;    // → 30n

10n - 20n;    // → -10n

+10n;        // → TypeError: Cannot convert a BigInt value to a number

-10n;        // → -10n

10n * 20n;    // → 200n

20n / 10n;    // → 2n

23n % 10n;    // → 3n

10n ** 3n;    // → 1000n

9007199254740992 === 9007199254740993;    // → true 居然是true!


BigInt不支持一元加号运算符, 这可能是某些程序可能依赖于 + 始终生成 Number 的不变量,或者抛出异常。另外,更改 + 的行为也会破坏 asm.js代码

因为隐式类型转换可能丢失信息,所以不允许在bigint和 Number 之间进行混合操作。当混合使用大整数和浮点数时,结果值可能无法由BigInt或Number精确表示

BigInt可以正常地进行位运算,如|、&、<<、>>和^

元素都为BigInt的数组可以进行sort

浏览器兼容性问题:

目前只有chrome67、firefox、Opera这些主流实现

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容