31

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

a = b ?? other

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

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

a = b && func(b)

我们只想funcb它不是 nullish 的情况下执行,否则分配 nullish b

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

4

3 回答 3

15

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

a = b == null ? b : func(b)
于 2020-07-16T07:51:21.107 回答
6

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

a = (b ?? false) && other

不是相反的??,因为a将取bif的值b是 undefined/null 以外的假值,例如''0。的反面??应该设置aothereven if bis''或的值0

于 2021-02-18T20:48:38.077 回答
0

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

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

真值表:

input     -> output
--------------------
null      -> false
undefined -> false
true      -> "other"
false     -> "other"
于 2021-08-27T23:04:32.713 回答