Skip to content

基本类型、最大值

类型typeof 返回值对象包装器
Null"object"不适用
Undefined"undefined"不适用
Boolean"boolean"Boolean
Number"number"Number
BigInt"bigint"BigInt
String"string"String
Symbol"symbol"Symbol

从概念上讲,undefined 表示的缺失,null 表示对象的缺失

变量是没有数据类型的,值才有数据类型

基本类型变量创建后不可变

函数传参是值传递(引用类型传递的是引用的地址值)

JavaScript 数值范围详解

1. 最大安全整数

  • Number.MAX_SAFE_INTEGER
    9007199254740991(即 2^53 - 1)
    意义:超过此值的整数运算可能丢失精度。
    示例
    javascript
    console.log(9007199254740991 + 1); // 9007199254740992 ✅
    console.log(9007199254740992 + 1); // 9007199254740992 ❌(精度丢失)

2. 最大浮点数值

  • Number.MAX_VALUE
    1.7976931348623157e+308
    意义:JS 能表示的最大浮点数,超过则视为 Infinity
    示例
    javascript
    console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
    console.log(Number.MAX_VALUE * 2); // Infinity

3. 大整数解决方案(ES6+)

  • BigInt 类型
    语法:数值后加 n 或调用 BigInt()
    特性:支持任意精度整数运算。
    示例
    javascript
    const bigNum = 9007199254740993n; // BigInt 字面量
    console.log(bigNum + 1n); // 9007199254740994n ✅

4. 数值类型对比

类型范围/精度适用场景
Number最大安全整数 2^53 - 1常规数值运算
BigInt无限精度(需显式声明)大整数计算(如加密、ID)
Infinity超过 Number.MAX_VALUE表示数学意义上的无穷大

5. 注意事项

  1. 隐式转换风险

    javascript
    console.log(1n + 2); // TypeError: 不能混合 BigInt 与 Number
  2. JSON 序列化
    BigInt 无法直接通过 JSON.stringify 序列化,需自定义转换。

  3. 性能开销
    BigInt 运算比 Number 慢,仅在必要时使用。

    alt text