JS Number、Boolean、Symbol、BigInt
Number 数值对象
Number 用于处理数字,包括整数和浮点数。
创建方式
js
let n1 = 42; // 基本数值
let n2 = new Number(42); // 对象形式(不推荐)
常用属性
js
Number.MAX_VALUE // 最大值 ≈ 1.79e+308
Number.MIN_VALUE // 最小正数 ≈ 5e-324
Number.NaN // 非数字
Number.POSITIVE_INFINITY // 正无穷大
Number.NEGATIVE_INFINITY // 负无穷大
常用方法
js
Number.isNaN(NaN); // true
Number.isFinite(10); // true
Number.isInteger(3.5); // false
Number.parseInt("123px"); // 123
Number.parseFloat("3.14abc"); // 3.14
数值格式化
js
let num = 123.456;
num.toFixed(2); // "123.46" 保留两位小数
num.toExponential(1); // "1.2e+2" 科学计数法
num.toString(16); // "7b" 转为16进制字符串
Boolean 布尔对象
Boolean 只有两种取值: true 和 false 。
转换规则
下列值会被转换为 false :
0, NaN, "", null, undefined, false
其他值都为 true 。
js
Boolean(0); // false
Boolean("JS"); // true
!!"text"; // true (常用于快速转布尔)
构造函数(不推荐)
js
let b1 = new Boolean(false);
if (b1) console.log("执行"); // 会执行,因为对象为 true!
⚠️ 建议直接使用布尔字面量 true / false ,不要用 new Boolean() 。
Symbol 唯一值
Symbol 是 唯一且不可变 的标识符,常用于对象属性避免命名冲突。
创建 Symbol
js
const id = Symbol("id");
const id2 = Symbol("id");
console.log(id === id2); // false,不会重复
作为对象属性
js
const user = {
[id]: 123,
name: "Alice"
};
console.log(user[id]); // 123
Symbol 属性不会被普通的 for...in 或 Object.keys() 枚举:
js
Object.keys(user); // ["name"]
Object.getOwnPropertySymbols(user); // [Symbol(id)]
全局注册的 Symbol
js
const s1 = Symbol.for("shared");
const s2 = Symbol.for("shared");
console.log(s1 === s2); // true 通过 Symbol.for() 共享
BigInt 大整数
BigInt 用于表示超过 Number 安全范围的大整数(±2⁵³)。
创建 BigInt
js
const big = 123456789012345678901234567890n; // 末尾加 n
const big2 = BigInt("12345678901234567890");
运算
只能与 BigInt 类型运算,不能与普通 Number 混合:
js
const a = 10n;
const b = 2n;
console.log(a + b); // 12n
console.log(a * b); // 20n
❌ 报错示例:
js
10n + 1; // TypeError
与 Number 转换
js
Number(10n); // 10
BigInt(10); // 10n
| 对象 | 用途 | 是否可变 | 典型场景 |
|---|---|---|---|
| Number | 普通数值 | 否 | 数学计算 |
| Boolean | 布尔值 | 否 | 条件判断 |
| Symbol | 唯一标识符 | 否 | 私有属性 |
| BigInt | 大整数 | 否 | 精度要求高的计算 |