javascript空条件表达式

javascript空条件表达式,javascript,operators,null-coalescing-operator,Javascript,Operators,Null Coalescing Operator,可能重复: 在C#中,您可以执行以下操作: var obj = newObject ?? defaultObject; 这表示将newObject分配给obj如果不为空,则分配defaultObject。如何用javascript编写此代码?虽然它被认为是一种滥用,但您可以执行以下操作: var obj = newObject || defaultObject; 请注意,如果newObject具有任何错误值(例如0或空字符串),defaultObject将作为obj的值返回。考虑到这一点,

可能重复:

在C#中,您可以执行以下操作:

var obj = newObject ?? defaultObject;
这表示将
newObject
分配给
obj
如果不为空,则分配
defaultObject
。如何用javascript编写此代码?

虽然它被认为是一种滥用,但您可以执行以下操作:

var obj = newObject || defaultObject;
请注意,如果
newObject
具有任何错误值(例如
0
或空字符串),
defaultObject
将作为
obj
的值返回。考虑到这一点,最好使用三元运算符或标准if语句

var obj = ( "undefined" === typeof defaultObject ) ? defaultObject : newObject ;

但这略有不同,因为它将导致
newObject
的任何false-y值出现
defaultObject
。也就是说,不存在“直接”等价物,因此具有显式等式的三元(
??
)可能更好地捕捉给定意图…@Lolcoder布尔
是实际假。Falsy值可能是数字
0
,或者是空字符串。@pst-虽然我同意你的观点,但我要指出,如果你事先知道
defaultObject
实际上是一个对象,那么它就永远不会是Falsy。这里有一个很好的答案来回答这个问题: