网络宝典
第二套高阶模板 · 更大气的阅读体验

条件判断怎么加默认情况?if、switch 都得有兜底

发布时间:2026-04-05 05:30:54 阅读:1 次

写代码时经常遇到这种情况:用户点了按钮,但没填姓名;上传了文件,但格式既不是 JPG 也不是 PNG;甚至天气预报程序查不到城市数据……这时候,条件判断不能只盯着“能匹配上”的情况,还得留一手——加个默认情况。

为什么默认情况不能少?

就像你去奶茶店点单,菜单上写着「加糖:多、少、无」,但如果顾客说「我要放蜂蜜」呢?菜单没写,但店员不会愣住,而是说「好的,我帮您备注」——这个「备注」就是默认情况。代码里也一样,现实世界千变万化,穷举所有分支不现实,default 就是那个靠谱的“兜底人”。

if 语句里的 else 就是默认情况

最常见也最直白的方式,就是 if 后面跟 else:

let score = 85;
if (score >= 90) {
  console.log("优秀");
} else if (score >= 80) {
  console.log("良好");
} else if (score >= 60) {
  console.log("及格");
} else {
  console.log("不及格,请加油"); // 这就是默认情况
}

注意:else 一定放在最后,不带任何条件,它负责接住前面所有 if 和 else if 都没拦住的值。

switch 语句靠 default 收尾

当判断的是固定几个取值(比如菜单选项、状态码),switch 更清晰。它的默认情况叫 default,必须写在最后(虽然语法允许插在中间,但强烈不建议):

let status = "pending";
switch (status) {
  case "success":
    showGreenCheck();
    break;
  case "error":
    showErrorMsg();
    break;
  case "loading":
    showSpinner();
    break;
  default:
    console.warn("未知状态:" + status); // 默认情况,防崩防懵
    showDefaultIcon();
    break;
}

三元运算符也有默认逻辑

短小判断用 ? :,它的“else”部分天然就是默认分支:

let userType = "vip";
let accessLevel = userType === "admin" ? "full" : 
                 userType === "vip"   ? "premium" : 
                 "basic"; // 最后一个冒号后面,就是默认情况

不过嵌套太多容易晕,两层以内还行,再深就建议换 if 或封装函数。

别让默认情况成摆设

见过有人这么写:

if (x > 0) {
  doPositive();
} else if (x < 0) {
  doNegative();
} else {
  // 空着
}

看着语法没错,但 x === 0 时啥也不干,用户点击没反应,日志没记录,问题难排查。默认情况不是凑数的,至少该打个日志、给个提示、或返回安全值,比如:

} else {
  console.log("x 为 0,走中性逻辑");
  return 0;
}

真实场景小提醒

表单提交前校验:所有字段都非空才提交,否则弹出提示——那个「否则」就是默认;
接口返回数据:status 是 200、404、500 都处理了,但万一返回了 0 或 undefined 呢?default 得管;
微信小程序 switchTab 跳转:页面名不在预设列表里?别崩溃,跳回首页并 toast 提示。

条件判断,别只想着“什么情况下做 A”,多问一句:“其他所有情况,我打算怎么办?”——这句话问多了,代码就稳了。