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。
当然,&&检查虚假性,而不是无效性。有没有无效的版本&&?
据我所知,没有这样的运营商,也没有建议增加一个。相反,您可以依靠标准方法来检查空值: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
正如其他人已经指出的那样,目前没有这样的运算符。然而,在官方 TC39 讨论组中,有一些针对该运算符的建议:
如果您有兴趣将其引入 ECMA,这些可能是不错的起点。