Javascript 零聚结算子的对立面
Nullish合并运算符允许在变量不是null或未定义的情况下赋值,或者在表达式不是null或未定义的情况下赋值Javascript 零聚结算子的对立面,javascript,typescript,nullish-coalescing,Javascript,Typescript,Nullish Coalescing,Nullish合并运算符允许在变量不是null或未定义的情况下赋值,或者在表达式不是null或未定义的情况下赋值 a = b ?? other 这是对以前使用的|的改进,因为如果b是空字符串或其他伪值,而不是空值,则|也将分配other 然而,有时我们也使用&进行赋值,例如 a = b && func(b) 这里我们只想在b上做func,如果它不是空的,否则指定空的b 当然,&&检查的是错误,而不是无效。是否有一个空版本的&&?据我所知,没有这样的操作符,也没有添加操作符的方
a = b ?? other
这是对以前使用的|
的改进,因为如果b是空字符串或其他伪值,而不是空值,则|
也将分配other
然而,有时我们也使用&
进行赋值,例如
a = b && func(b)
这里我们只想在b上做func,如果它不是空的,否则指定空的b
当然,
&&
检查的是错误,而不是无效。是否有一个空版本的&&
?据我所知,没有这样的操作符,也没有添加操作符的方法。相反,您可以依赖:b==null
a = b == null ? b : func(b)
测试反向零共聚集的工作示例
a = (b ?? false) && other
这不会回答这个问题,因为@str已经回答了这个问题,我只是在这里发布这篇文章,因为我没有足够的代表对@Dalou的答案发表评论,也不希望人们被这个答案绊倒
a = (b ?? false) && other
不是?
的对立面,因为如果b
不是未定义/空值,例如'
或0
,则a
将取b
的值。
??
的对立面应将a
设置为other
的值,即使b
是'
或0
,据我所知,没有这样的操作符(甚至没有建议)。但是您可以使用以下选项:a=b==null?b:func(b)
。带空值的双等号听起来很恐怖?它是.@f.khantsisx==null
仅在x=null
或x=undefined
时返回true
。因此,它与空值合并行为完全匹配,仅对这些值激活。@StackSlave“如果不空值,则对b执行func,否则指定空值b”似乎正是我的代码所做的。如果b
为false
,则此方法被视为未定义或空,因此触发器func(b)