Javascript 当0是有效值时,我可以使用条件赋值吗?

Javascript 当0是有效值时,我可以使用条件赋值吗?,javascript,Javascript,例如,我想获取一个输入,如果它是一个数字,则有条件地将其设置为另一个变量 我想做一些像 var x = input || "default value" var x = typeof(input) !== "undefined" ? input : "default value" 如果输入未定义,我可以设置默认值。但是,我希望输入是一个数字,在input==0的情况下,我希望x==0 我知道我可以用一个三元运算符来做 var x = input || "default value"

例如,我想获取一个输入,如果它是一个数字,则有条件地将其设置为另一个变量

我想做一些像

var x = input || "default value" 
var x = typeof(input) !== "undefined" ? input : "default value" 
如果输入未定义,我可以设置默认值。但是,我希望输入是一个数字,在
input==0
的情况下,我希望
x==0

我知道我可以用一个三元运算符来做

var x = input || "default value" 
var x = typeof(input) !== "undefined" ? input : "default value" 

有没有一种不太详细的方法可以做到这一点?

我所知道的最实用的不太详细的方法是使用helper函数

function def(input, defvalue){
   return (typeof(input) !== "undefined" ? input : "default value");
}

var x = def(input, "default");
但是它会计算默认值,即使您最终没有使用它,因此语义略有不同

除此之外,我认为CopeFScript有两个用于做你想做的事情,但是他们认为NULL和UnDebug是等价的(所以等效JS将是代码>输入!= null?输入:DeValue< /Cord>)。 我想获取一个输入,如果它是一个数字,有条件地将它设置为另一个变量


警告:如果输入为空,则仍将
x
设置为空。但也许这就是您想要的-不确定它能缩短多少。

如果您希望使用
数字类型,并希望将
x
设置为默认值,否则,您可以尝试以下方法:

var x = (input === +input) ? input : "default value";
+
运算符尝试将
输入
转换为数字类型。如果不是数字,它将返回
NaN
。如果它是一个数字,但是
input
实际上是一个字符串,那么严格的
==
标识比较将返回false

这样做的问题是:

var x = typeof(input) !== "undefined" ? input : "default value" 

是因为
typeof(null)
object
var x=input!=无效的输入:'default'
,因为
null==undefined
“cleaner”我的意思是不太详细+1可能会执行
+input
null
或其他可强制的非数字的情况下强制值为数字。