读源码时看到一段代码:

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的人,挺好的(不)