| 类型 | typeof 返回值 |
对象包装器 |
|---|---|---|
| Null | "object" |
不适用 |
| Undefined | "undefined" |
不适用 |
| Boolean | "boolean" |
Boolean |
| Number | "number" |
Number |
| BigInt | "bigint" |
BigInt |
| String | "string" |
String |
| Symbol | "symbol" |
Symbol |
从概念上讲,undefined 表示_值_的缺失,null 表示_对象_的缺失
变量是没有数据类型的,值才有数据类型
基本类型变量创建后不可变
函数传参是值传递(引用类型传递的是引用的地址值)
Number.MAX_SAFE_INTEGER
值:9007199254740991(即 2^53 - 1)
意义:超过此值的整数运算可能丢失精度。
示例:console.log(9007199254740991 + 1); // 9007199254740992 ✅ console.log(9007199254740992 + 1); // 9007199254740992 ❌(精度丢失)
Number.MAX_VALUE
值:1.7976931348623157e+308
意义:JS 能表示的最大浮点数,超过则视为Infinity。
示例:console.log(Number.MAX_VALUE); // 1.7976931348623157e+308 console.log(Number.MAX_VALUE * 2); // Infinity
BigInt类型
语法:数值后加n或调用BigInt()。
特性:支持任意精度整数运算。
示例:const bigNum = 9007199254740993n; // BigInt 字面量 console.log(bigNum + 1n); // 9007199254740994n ✅
| 类型 | 范围/精度 | 适用场景 |
|---|---|---|
Number |
最大安全整数 2^53 - 1 | 常规数值运算 |
BigInt |
无限精度(需显式声明) | 大整数计算(如加密、ID) |
Infinity |
超过 Number.MAX_VALUE |
表示数学意义上的无穷大 |
- 隐式转换风险:
console.log(1n + 2); // TypeError: 不能混合 BigInt 与 Number
- JSON 序列化:
BigInt无法直接通过JSON.stringify序列化,需自定义转换。 - 性能开销:
BigInt运算比Number慢,仅在必要时使用。