在JavaScript(以及TypeScript)中, OR逻辑运算符遵循一个惰性评估模型,这意味着它将返回第一个返回true的表达式,而不会继续检查其余表达式。
这意味着,如果您具有以下IF语句,则仅对前两个表达式进行求值:
假设expression1是falsy (即它返回一个评估为false的值),而expression2是truthy (即它返回一个评估为true的值),则评估将在那里停止。
我们可以利用这种惰性计算,而不是在IF语句中使用它,而可以将其用作分配的一部分,以便在表达式失败或undefined情况下提供默认值:
上面的示例显示了如何使用OR运算符为函数的第二个参数设置默认值。现在,如果您仔细观察,将会发现这种方法存在一个小问题:如果variable2的值为0或一个空字符串,则将在var2上设置默认值,因为它们的值都为false 。
因此,如果您的用例也允许将falsy值设为有效值,那么您可能希望查看一个鲜为人知的操作数,称为“空值合并运算符”。