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将
|
替换为
??
@mynameiszsofia
a??Bc
将返回
0
如果其中任何一个为零,而其他的
null
未定义的
@mynameiszsofia,那么这个函数对我来说没有意义,就像
false
返回
false
为什么不直接返回
false
?其他值也一样。这是你函数的缩小版吗?@Ifaruki是的,这是缩小版,对我来说,这个空值不是解决问题的最佳方式,因为如果所有值都未定义,那么这个语句将是零而不是未定义