← 返回目录

12. 短路运算简化条件

&&||"偷懒"——左边能定结果,右边直接不看。利用这一点能写出超简洁的默认值。

12.1 互动演示

userName:
留空 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 清楚