javascript数值类型应始终作为原始值使用,避免number包装对象;数值属性需语义明确、合理初始化并用const/let控制可变性,兼顾性能与可读性。

JavaScript 数值类型在对象设计中应始终作为原始值使用,避免包装成 Number 对象。对象设计时,数值属性需明确语义、合理初始化,并配合 const/let 声明控制可变性,同时注意性能与可读性的平衡。
数值属性应使用原始值,而非 Number 对象
用字面量(如 42、3.14)声明数值,不要写 new Number(42) 或 Number("42")(后者仅在类型转换时必要)。包装对象会带来意外行为:
-
typeof new Number(42)返回"object",而typeof 42是"number" - 包装对象参与相等比较可能出错:
new Number(42) == 42为true,但new Number(42) === 42为false - 增加内存开销且无实际收益
数值属性命名要体现业务含义,避免魔法数字
不直接暴露裸数值,而是用具名属性承载其语义。例如:
- ❌
{ price: 99 }—— 含义模糊,单位、精度、是否含税未知 - ✅
{ basePriceCents: 9900, taxRatePercent: 8.5, discountAmountCents: 1200 }—— 明确单位(分)、精度(整数防浮点误差)、业务角色
对计数类数值,推荐使用 count、totalItems、maxRetries 等清晰名称,而非 num 或 x。
初始化与默认值需显式声明
对象字面量中所有数值属性都应赋予初始值,尤其在构造函数或工厂函数中:
- 避免
undefined导致后续计算出错(如obj.count + 1→NaN) - 常用默认策略:
count: 0、score: 0、timeoutMs: 5000、version: 1 - 若某数值确实“暂无”,应使用
null显式表示缺失,而非留空或设为0(语义不同)
结合 const 声明与不可变设计原则
对配置类或只读数值属性,优先用 const 声明整个对象(或使用 Object.freeze):
const HTTP_STATUS = { OK: 200, NOT_FOUND: 404, SERVER_ERROR: 500 };- 数值本身不可变,引用也不可重新赋值,保障运行时稳定性
- 若需修改实例数值(如用户积分),仍用
let或直接赋值,但应在方法内封装逻辑(如user.addPoints(10)),而非裸操作user.points += 10
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











