前端 JavaScript 进阶面试题, JavaScript 的 BigInt 和 Number 类型有什么区别?
前端 JavaScript 进阶面试题, JavaScript 的 BigInt 和 Number 类型有什么区别?
QA
Step 1
Q:: JavaScript 的 BigInt 和 Number 类型有什么区别?
A:: BigInt 是 JavaScript 中表示任意精度整数的一种数据类型,允许处理比 Number 类型更大的整数。Number 类型采用的是双精度 64 位二进制格式 IEEE 754 表示,可以安全表示的最大整数是 2^53-1(即 Number.MAX_SAFE_INTEGER),而最小整数是 -(2^53-1)(即 Number.MIN_SAFE_INTEGER)。BigInt 类型可以表示任意大的整数,没有 Number 类型的范围限制。BigInt 使用 'n' 表示,例如 123
n,而 Number 则是普通的数字表示。由于 BigInt 的特性,它不能与 Number 类型直接混合运算,需要进行类型转换。
Step 2
Q:: BigInt 类型如何创建和使用?
A:: BigInt 类型可以通过在整数后加 'n' 或使用 BigInt 构造函数创建。例如:const bigInt1 = 123n; const bigInt2 = BigInt('123');
。BigInt 支持所有常见的整数运算,如加法、减法、乘法、除法等,但不支持浮点运算。
Step 3
Q:: BigInt 和 Number 类型的转换如何进行?
A:: 可以使用 Number 函数将 BigInt 转换为 Number,例如:const num = Number(123n); 但需要注意可能会丢失精度。可以使用 BigInt 函数将 Number 转换为 BigInt,例如:const bigInt = BigInt(123);
但对于非整数的 Number 会抛出错误。
Step 4
Q:: BigInt 的实际应用场景有哪些?
A:: BigInt 通常用于需要处理超出 Number 类型范围的大整数的场景,例如处理大型整数计算、精确金融计算、大数的加密算法和区块链中的某些运算。