Javascript 如果值为0,如何返回零
我有这个密码:Javascript 如果值为0,如何返回零,javascript,Javascript,我有这个密码: function isTruthy(value) { switch (value) { case false: return false; case null: return null; case undefined: return undefined; case 0: return 0; } return value } const
function isTruthy(value) {
switch (value) {
case false:
return false;
case null:
return null;
case undefined:
return undefined;
case 0:
return 0;
}
return value
}
const nextValue = isTruthy(xsd[nextPath]) || isTruthy(xsd`xd:${[nextPath]}`) ;
如果第一部分
isTruthy(xsd[nextPath])
是0,但是第二部分isTruthy(xsd`xd${[nextPath]}`)
是未定义的,那么nextValue值将是未定义的,但是我想知道如果它是0,我该怎么做呢?尝试null coalesing操作符。它几乎与逻辑or|
相同,不同之处在于,如果左侧为空值,它将操作右侧
空值为:null
,未定义
因为0
是false,但不是null,所以它将执行左侧
const nextValue = isTruthy(xsd[nextPath]) ?? isTruthy(xsd`xd:${[nextPath]}`) ;
合并运算符的另一种选择(Ifaruki的答案)是在行的末尾添加另一个“或零”undefined
为false ish,因此它将传递到最后的'or'参数
const nextValue = isTruthy(xsd[nextPath]) || isTruthy(xsd`xd:${[nextPath]}`) || 0;
这回答了你的问题吗?是我遗漏了什么,还是isTruthy
总是返回value
包含的内容?@crashmstr不,你没有遗漏任何内容。谢谢@Ifaruki,但是,如果我需要测试两个以上的语句,该怎么办?像a | | b | | c。。如果其中一个是0,但另一个是未定义的,我需要得到0@mynameiszsofia将|
替换为??
@mynameiszsofiaa??Bc
将返回0
如果其中任何一个为零,而其他的null
或未定义的@mynameiszsofia,那么这个函数对我来说没有意义,就像false
返回false
为什么不直接返回false
?其他值也一样。这是你函数的缩小版吗?@Ifaruki是的,这是缩小版,对我来说,这个空值不是解决问题的最佳方式,因为如果所有值都未定义,那么这个语句将是零而不是未定义