基本类型、最大值
类型 | 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); // Infinity
1
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 与 Number
1 - JSON 序列化:
BigInt
无法直接通过JSON.stringify
序列化,需自定义转换。 - 性能开销:
BigInt
运算比Number
慢,仅在必要时使用。