与无效合并运算符相反

f.k*_*sis 23 javascript typescript nullish-coalescing

如果变量不为空或未定义,则空合并运算符允许分配变量,否则为表达式。

a = b ?? other
Run Code Online (Sandbox Code Playgroud)

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

但是有时,我们也&&用于赋值,例如

a = b && func(b)
Run Code Online (Sandbox Code Playgroud)

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

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

str*_*str 9

据我所知,没有这样的运营商,也没有建议增加一个。相反,您可以依靠标准方法来检查空值b == null

a = b == null ? b : func(b)
Run Code Online (Sandbox Code Playgroud)


小智 5

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

a = (b ?? false) && other
Run Code Online (Sandbox Code Playgroud)

不是 , 的反义词??,因为ifa的值是 undefined/null 以外的假值,例如或例如。的相反应设置为即使是或的值。bb''0??aotherb''0


Seb*_*ian 5

正如其他人已经指出的那样,目前没有这样的运算符。然而,在官方 TC39 讨论组中,有一些针对该运算符的建议:

如果您有兴趣将其引入 ECMA,这些可能是不错的起点。