与无效合并运算符相反

Opposite of nullish coalescing operator

Nullish 合并运算符允许分配一个变量,如果它不是 nullundefined,否则是一个表达式。

a = b ?? other

这是对以前使用的 || 的改进,因为如果 b 是空字符串或其他虚假值,但不是无效值,|| 也会分配其他值。

但是,有时候,我们也用&&来赋值,比如

a = b && func(b)

我们只想在 b 上执行 func 如果它不是空值,否则分配空值 b.

当然,&& 检查的是虚假性,而不是无效性。是否有 && 的无效版本?

据我所知,没有这样的运算符,也没有 proposal to add one. Instead you can rely on the standard way to check for nullish values: b == null

a = b == null ? b : func(b)

这不会回答这个问题,因为它已经被@str 回答了,我只是在这里发布这个,因为我没有足够的代表来评论@Dalou 的回答并且不希望人们绊倒那个答案。

a = (b ?? false) && other

不是 ?? 的反义词,因为如果 b 是 undefined/null 以外的假值,a 将取 b 的值,例如 ''0?? 的反面应将 a 设置为 other 的值,即使 b''0.

我不喜欢,但这是我的解决方案:

output = typeof input === 'boolean' && "other"

真相table:

input     -> output
--------------------
null      -> false
undefined -> false
true      -> "other"
false     -> "other"