&& 和 || 会"偷懒"——左边能定结果,右边直接不看。利用这一点能写出超简洁的默认值。
&& 和 || 有个聪明的"偷懒":只要左边已经能定结果,右边就根本不看。|| 的规矩是:左边是真,就直接用左边;左边是假,才看右边。天生适合"没值就给个默认"。
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,别耍帅。