JavaScript原始类型操作应坚持清晰、安全、可维护原则:用const声明不可变原始值;比较用===,判空用==null并注释;字符串转数字用Number();禁用new String()等构造函数;布尔变量以is/has/can开头,数字注明单位,字符串命名具语义。

原始类型操作在 JavaScript 中看似简单,但结构不规范容易引发隐式转换、意外覆盖或可读性下降等问题。关键不是“能不能运行”,而是“是否清晰、安全、可维护”。
用 const 声明所有原始值变量
原始类型(string、number、boolean、null、undefined、symbol、bigint)不可变,因此绝大多数场景下应使用 const 而非 let 或 var。这既是语义表达(值不会重赋),也防止误修改。
- ✅ 推荐:
const userName = 'Alice'; const isActive = true; const count = 42; - ❌ 避免:
let userName = 'Alice';(除非后续明确要重新赋值) - ⚠️ 注意:const 保证的是绑定不变,不是值不可变——对原始类型而言二者等价;对对象则不同,这点无需混淆。
避免隐式类型转换的写法
原始类型参与运算或比较时,JavaScript 容易触发隐式转换(如 ==、+ 拼接数字字符串),导致逻辑偏差。结构上应主动显式处理类型。
- 比较一律用 ===,不用
==;null和undefined的判空优先用== null(兼顾两者),但需加注释说明意图 - 字符串转数字统一用 Number(),而非
+或parseInt()(后者默认十进制但易忽略 radix) - 布尔转换推荐用 Boolean(value) 或双重取反
!!value,避免依赖value ? true : false这类冗余写法
字面量优先,避免构造函数
创建原始值必须使用字面量语法,禁用 new String()、new Number() 等包装对象形式——它们返回的是对象,不是原始类型,会破坏 typeof 判断和严格相等。
- ✅ 正确:
const name = 'Tom'; const age = 25; const flag = false; - ❌ 错误:
const name = new String('Tom'); // typeof name === 'object' - ? 补充:若需调用方法(如
'hello'.toUpperCase()),JS 会临时包装,无需手动干预,这是语言设计保障。
命名与用途保持语义一致
原始值变量名应直接反映其含义和类型特征,避免歧义或缩写,尤其注意布尔值和数字单位。
- 布尔变量用 is/has/can 开头:
isActive、hasPermission、canEdit - 数字变量注明单位或场景:
timeoutMs、maxRetries、priceCents(而非模糊的price) - 字符串避免泛称:
userEmail比str或data更准确;空字符串校验建议用value.trim() === ''而非仅!value


















