JavaScript原始类型命名需语义化:变量用名词体现业务含义,函数用动词明确操作意图,布尔值优先is/has/can前缀,常量全大写且带上下文。

JavaScript 中对原始类型(如 string、number、boolean、null、undefined、symbol、bigint)进行操作时,命名是否清晰、准确,直接影响代码可读性与后期维护效率。语义化命名不是“起个像样的名字”,而是让名字本身传达意图、行为和数据本质。
变量名要体现原始类型的语义角色
原始类型变量应使用名词或名词短语,并尽可能反映其业务含义和值的自然属性:
- ✅
userName(字符串,表示用户姓名) - ✅
maxRetries(数字,表示最大重试次数) - ✅
isActive(布尔值,状态判断) - ✅
isVerified(布尔值,“是否已验证”比verified更明确) - ✅
userId(字符串或数字,但命名不暴露类型,强调用途) - ❌
strName、numCount、boolFlag(类型前缀冗余,JS 是动态类型,且破坏语义) - ❌
data、info、value(过于宽泛,无法推断用途)
函数名需用动词明确操作意图
对原始类型做读、写、判断、转换等操作时,函数名必须以语义动词开头,并保持小驼峰格式:
-
getName()→ 获取字符串值 -
setEmail(email)→ 接收字符串参数并赋值 -
hasPermission()→ 返回布尔值,表达“是否拥有权限” -
isEmailValid(email)→ 明确判断目标与输入 -
parsePhoneNumber(input)→ 表明将字符串转为结构化数字或对象 -
formatCurrency(amount)→ 输入数字,输出格式化字符串
避免模糊动词如 handleX、processY、doZ,它们掩盖真实行为。
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
布尔值命名优先采用 isX / hasX / canX 模式
原始类型中布尔值最易引发歧义,命名必须自带判断语气:
-
isLoading(正在加载中?✅) -
loading(是加载动作?还是加载状态?❌ 模糊) -
hasItems(集合非空判断,即使items.length > 0是 number 比较,结果仍是布尔语义) -
canSubmit(权限/条件检查,返回布尔) -
isEmpty(对字符串、数组等原始包装行为,语义统一)
这类命名让调用处逻辑一目了然:if (isOnline && hasToken) { ... }
常量与字面量需兼顾稳定性和可读性
原始类型常量(如 API 路径、默认超时、状态码)应全大写+下划线分隔,但内容仍需语义完整:
- ✅
DEFAULT_TIMEOUT_MS(单位明确,类型隐含为 number) - ✅
API_BASE_URL(字符串常量,用途清晰) - ✅
STATUS_PENDING(字符串枚举值,比'pending'直接硬编码更安全) - ❌
TIMEOUT(缺少单位和上下文) - ❌
PENDING(孤立存在时不知所属域,建议ORDER_STATUS_PENDING)
不复杂但容易忽略

















