跳到主要内容

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 只有两种取值: truefalse


转换规则

下列值会被转换为 false0, 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...inObject.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大整数精度要求高的计算