基本类型、最大值
| 类型 | 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)
意义:超过此值的整数运算可能丢失精度。
示例:javascriptconsole.log(9007199254740991 + 1); // 9007199254740992 ✅ console.log(9007199254740992 + 1); // 9007199254740992 ❌(精度丢失)1
2
2. 最大浮点数值
Number.MAX_VALUE
值:1.7976931348623157e+308
意义:JS 能表示的最大浮点数,超过则视为Infinity。
示例:javascriptconsole.log(Number.MAX_VALUE); // 1.7976931348623157e+308 console.log(Number.MAX_VALUE * 2); // Infinity1
2
3. 大整数解决方案(ES6+)
BigInt类型
语法:数值后加n或调用BigInt()。
特性:支持任意精度整数运算。
示例:javascriptconst bigNum = 9007199254740993n; // BigInt 字面量 console.log(bigNum + 1n); // 9007199254740994n ✅1
2
4. 数值类型对比
| 类型 | 范围 / 精度 | 适用场景 |
|---|---|---|
Number | 最大安全整数 2^53 - 1 | 常规数值运算 |
BigInt | 无限精度(需显式声明) | 大整数计算(如加密、ID) |
Infinity | 超过 Number.MAX_VALUE | 表示数学意义上的无穷大 |
5. 注意事项
- 隐式转换风险:javascript
console.log(1n + 2); // TypeError: 不能混合 BigInt 与 Number1 - JSON 序列化:
BigInt无法直接通过JSON.stringify序列化,需自定义转换。 - 性能开销:
BigInt运算比Number慢,仅在必要时使用。