龙空技术网

JavaScript基础类型BigInt简介

NativeBase 152

前言:

此刻朋友们对“js基本数据类型bigint”都比较讲究,朋友们都想要学习一些“js基本数据类型bigint”的相关内容。那么小编同时在网上汇集了一些有关“js基本数据类型bigint””的相关知识,希望小伙伴们能喜欢,姐妹们一起来学习一下吧!

JavaScript中的BigInt是一种新的数据类型,用于处理大数运算,即超过Number类型所能表示的范围的整数。

bigint 是一种基本数据类型(primitive data type)。

JavaScript 中可以用 Number 表示的最大整数为 2^53 - 1,可以写为 Number.MAX_SAFE_INTEGER。如果超过了这个界限,可以用 BigInt来表示,它可以表示任意大的整数。

bigint 数据类型是用来表示那些已经超出了 number 类型最大值的整数值,对于总是被诟病的整数溢出问题,使用了 bigint 后将完美解决。

语法

在一个整数字面量后加 n 的方式定义一个 BigInt,如:10n 或者调用函数 BigInt()

const theBiggestInt: bigint = 9007199254740991nconst alsoHuge: bigint = BigInt(9007199254740991)const hugeString: bigint = BigInt("9007199254740991")theBiggestInt === alsoHuge // true

例如,BigInt类型的值可以这样定义:

const a = 123456789012345678901234567890n;const b = BigInt(123456789012345678901234567890);

BigInt类型支持与Number类型相同的算术运算符和逻辑运算符,但需要特别注意一些细节。例如,BigInt类型与Number类型之间的加法运算需要使用BigInt()方法将Number类型转换为BigInt类型后再进行运算,否则会出现精度丢失的问题。

const a = 123456789012345678901234567890n;const b = 123456789012345678901234567890;const c = a + BigInt(b); // 正确:246913578024691357802469135780nconst d = a + b; // 错误:精度丢失,得到的结果是246913578024691357802469135779

需要注意的是,由于BigInt类型是ES2020中新增的特性,因此在一些旧版本的JavaScript环境中可能无法使用。

类型信息

使用 typeof 检测类型时,BigInt 对象返回 bigint:

typeof 10n === 'bigint'         // truetypeof BigInt(10) === 'bigint'  // truetypeof 10 === 'number'          // truetypeof Number(10) === 'number'  // true
运算

BigInt 可以正常使用 +-*/**% 符号进行运算:

const previousMaxSafe: bigint = BigInt(Number.MAX_SAFE_INTEGER)  // 9007199254740991nconst maxPlusOne: bigint = previousMaxSafe + 1n                  // 9007199254740992nconst multi: bigint = previousMaxSafe * 2n                       // 18014398509481982nconst subtr: bigint = multi – 10n                                // 18014398509481972nconst mod: bigint = multi % 10n                                  // 2nconst bigN: bigint = 2n ** 54n                                   // 18014398509481984n
比较 与 条件

NumberBigInt 可以进行比较:

0n === 0 // false0n == 0 // true1n < 2  // true2n > 1  // true2 > 2   // false2n > 2  // false2n >= 2 // true

条件判断:

if (0n) {  console.log('条件成立!');} else {  console.log('条件不成立!'); // 输出结果}0n || 10n    // 10n0n && 10n    // 0nBoolean(0n)  // falseBoolean(10n) // true!10n         // false!0n          // true

代码解释:

后面会有一节介绍 Truthy 与 Falsy,这里先简单提下。除了明确的 true 和 false 两个 boolean 类型外,JavaScript 可以在需要用到布尔类型值的上下文中使用强制类型转换将值转换为布尔值。

比如 0 是假,10 是真。那么,同样的,0n 是假,10n 是真。

标签: #js基本数据类型bigint