Javascript 如何使零值作为真实值计数?

Javascript 如何使零值作为真实值计数?,javascript,operators,Javascript,Operators,在过去的几周里,我发现自己一次又一次地遇到同样的问题,就是在未设置第一个值的情况下,使用|操作符指定默认值时: (myVariable || 'somestring') 无论何时myVariable不是0,这都会起作用,但如果它是0,那么它就会有问题,因为它会将其计为错误值。这可以通过检查它是否为零来解决,但它很快就会变成无法读取的混乱状态,例如(myVariable>=0?myVariable:'somestring') 允许myVariable为0但仍算作真实值的最简单、最正确的方法是什么

在过去的几周里,我发现自己一次又一次地遇到同样的问题,就是在未设置第一个值的情况下,使用
|
操作符指定默认值时:

(myVariable || 'somestring')
无论何时
myVariable
不是
0
,这都会起作用,但如果它是
0
,那么它就会有问题,因为它会将其计为错误值。这可以通过检查它是否为零来解决,但它很快就会变成无法读取的混乱状态,例如
(myVariable>=0?myVariable:'somestring')

允许
myVariable
0
但仍算作真实值的最简单、最正确的方法是什么?请注意,
myVariable
必须仍然是原始值,因此使用
运算符不起作用。

尝试以下操作:

x==0 | | x?x:y

提供与以下相同的输出:

x!==0&(x|y)|0

但更容易阅读我认为我的解决方案:

(myVariable.toString() || 'somestring')

您需要一个try/catch-through

解决方案,该解决方案仅包含逻辑运算符:

函数getValue(v){ 返回v!==0&(v | |'someString')| | 0; } write(getValue(null)+'
'); write(getValue(false)+'
'); write(getValue(未定义)+'
'); 编写(getValue(0)+'
'); 编写(getValue(1)+'
'); 编写(getValue('42')+'
')我找到了简单的解决方案:

(myVariable.toString() || 'somestring')

(MyValue==0′0′:(MyValue'''字符串))

你认为什么是“代码> TtruthValue>>?@ Rayndabre,你不理解这个问题。如果不是假,你的代码总是返回一个布尔值而不是实际变量。@ Viste是什么意思?如果你考虑<代码> 0 >代码>是代码> truth,还有什么其他的代码> Falth值,你认为是“代码> TrutyS/<代码>吗?或者
0
是唯一的例外?@VisioN 0是唯一的例外,它总是在我的代码中引起错误。
false
=>
'false'
而不是
'somestring'
Arg我想的是null或未定义,但你很酷,但这并不是我想要的解决方案,因为它比我的示例解决方案造成了更大的混乱。@Nina,使用
三元
?@RayonDabre,看,安德烈亚斯·齐塔的答案。可以简化为
返回v==0吗?v:(v | |'someString')我会说这比我的示例可读性差,你不同意吗?