← 返回目录

12. 短路运算简化条件

短路运算就是利用 && 和 || 的"偷懒"特性,前面定了结果就不看后面,能省掉 if 写法。

核心三种用法:
a || b——a 有值用 a,否则用 b(设默认值)
a && b——a 存在才执行 b(简化 if)
??——空值合并,只对 null/undefined 生效

坑:|| 会把 0 和空串当 false、?? 比 || 更精确、别把短路当赋值用

12.1 互动演示

userName:
留空点 ||;勾选/取消点 &&。

12.2 知识点逐条讲解(配合代码)

|| 短路:左边够真就不看右边了

&&|| 有个聪明的"偷懒":只要左边已经能定结果,右边就根本不看|| 的规矩是:左边是真,就直接用左边;左边是假,才看右边。天生适合"没值就给个默认"。

// 假设用户没登录,名字是空的
let userName = "";
// if 写法:要四行
let showName;
if (userName) {
  // 有名字就用名字
  showName = userName;
} else {
  // 没名字就叫游客
  showName = "游客";
}

// 短路写法:一行搞定
// 名字有值就用名字,空就用"游客"
let showName2 = userName || "游客";
// "游客"
console.log(showName2);

如果你想给用户一个"没登录就叫游客"的默认称呼userName || '游客' 就是开发里用烂了的写法。哪天 userName 变成 "张三",它自动用 "张三",代码一个字都不用改。

&& 短路:左边假就直接停

&& 的规矩反过来:左边是假,直接返回左边、右边根本不执行;左边是真,才去看右边

// 假设用户已登录(勾选了)
let isLogin = true;
// if 写法
if (isLogin) {
  console.log("欢迎回来!");
}

// 短路写法:isLogin 是假的话,右边的打印根本不会执行
isLogin && console.log("欢迎回来!");

③ 什么时候用短路,什么时候老实写 if

如果你用 && 来代替 if 去执行一大段代码,虽然短,但别人读代码时容易没注意到"这里还有一句要执行"。开发规范是:短路主要用来设默认值(|| '游客');要执行语句就老老实实写 if,尤其条件复杂时别耍帅。

实战:用在哪 / 常见坑 / 怎么解决

① 可能在什么地方用:用户没登录就显示'游客';登录了才打欢迎语。

② 常见的问题:&& 去执行一大段代码,别人读时容易漏看后面还有一句。

③ 解决思路:|| 专门用来设默认值;要执行多语句就老老实实写 if,别耍帅。

一句话记住:|| 左边真就用左边、左边假才用右边,专设默认值 userName||'游客';&& 左边假就短路、左边真才执行右边;要执行语句还是写 if 清楚

本页重点

API作用参数返回值代码示例
||短路或:取第一个真值两个值第一个真值 / 都假则最后一个console.log(true || false); // true
&&短路与:取第一个假值两个值第一个假值 / 都真则最后一个console.log(true && false); // false