卫语句通过在函数开头用多个独立if+return提前拦截边界条件,使主逻辑浮至顶层、结构扁平、意图清晰;每条卫语句只负责一个关注点,按轻量到重量顺序排列,专做守门不掺业务逻辑。

直接用卫语句把边界条件提前拦截,主逻辑自然就浮到顶层,不用缩进、不绕弯、一眼看清执行路径。
卫语句的核心写法
卫语句不是新语法,而是编码风格:在函数开头用多个独立的 if + return 检查前置条件,符合条件就立即退出,不满足才继续往下走。
- 每个判断只负责一个关注点,比如“用户为空吗?”“订单状态合法吗?”“数据长度够吗?”
- 返回值通常是
return、return false或return null,取决于函数契约 - 所有卫语句写完后,剩下的代码就是“正常流程”,不再套在层层 if 里
对比嵌套写法和卫语句效果
原始嵌套容易漏掉 else 分支、缩进过深、逻辑被埋没:
PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。
if (user) {
if (user.active) {
if (order) {
if (order.status === 'draft') {
if (order.items.length > 0) {
sendToWarehouse(order);
updateStatus(order, 'sent');
return true;
}
}
}
}
}
return false;
改成卫语句后,结构扁平、意图清晰:
if (!user) return false; if (!user.active) return false; if (!order) return false; if (order.status !== 'draft') return false; if (order.items.length === 0) return false; sendToWarehouse(order); updateStatus(order, 'sent'); return true;
实际应用中的关键细节
卫语句不是机械替换,要注意三点:
- 顺序有讲究:先检查最轻量、最容易失败的条件(比如空值、类型错误),避免后续昂贵操作
- 别和业务逻辑混在一起:卫语句只做“守门”,不处理领域规则;比如权限校验可以是卫语句,但“VIP用户打九折”属于主逻辑
-
配合早期返回更自然:函数有明确出口时(如返回布尔、对象或 Promise),用
return终止比抛异常更轻量,也更符合 JS 风格
常见适用场景
这些地方用卫语句特别顺手:
- API 接口函数开头校验参数是否齐全、类型是否正确
- 事件回调中检查 DOM 元素是否存在、是否已被移除
- 异步操作前确认 loading 状态或上一次请求是否完成
- 组件渲染前判断 props 是否有效,避免
undefined.xxx报错
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










