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
或其他可强制的非数字的情况下强制值为数字。