读源码时看到一段代码:

const potMax =
      env.potMax || Number(config.get("General.MaxNumPotionsToUse")) || 99999;

黑人问号,逻辑操作符还能用在赋值里面?不是用来判断两个表达式的真假的吗?

搜索文档,看见 w3xschool、菜 x 教程之流也是这么说的

比较和逻辑运算符用于测试 true 或 false。

(x==5 || y==5) 为 false

甚至巨硬 MSDN 也为其背书

如果两个表达式中的一个或二者的计算结果为 True,则 result 为 True。

然而在搜索关键词里加上“赋值”二字的话又会多出来一些 blog 传授用逻辑操作符赋值的方法。

最后还好留了个心眼,看了看 MDN 是怎么说的

逻辑与 (&&) expr1 && expr2 如果 expr1 能转换成 false 则返回 expr1,否则返回 expr2。因此,与布尔值一起使用时,如果两个操作数都为 true 时 && 返回 true,否则返回 false。
逻辑或 (||) expr1 || expr2 如果 expr1 能转换成 true 则返回 expr1,否则返回 expr2。因此,与布尔值一起使用时,如果任意一个操作数为 true 时 || 返回 true。

这 TM 和用来测试 true 和 false 的方法差了几百万条街好不好啊。

总结

逻辑操作符(&&、||)在进行比较时会把两个表达式转换成布尔值进行比较,并根据结果返回对应表达式(的结果)。
平时常用的判断真假实际上只是直接将两个表达真假的表达式进行比较然后得出结果。
根据这个特性,可以将逻辑操作符用在赋值操作中:
a = b || "Lorem":若 b 不为 null、undefined、0 等能转换成 false 的变量,则a == b。否则a == "Lorem"

这明明是逻辑操作符的基础知识,结果国内外把这种容易误导人的知识点传得这么广……
不过换个角度想想,可以过滤掉那些不愿意看 Documents 的人,挺好的(不)