例如,我想接受输入,并有条件地将其设置为另一个变量(如果它是一个数字)。
我想做点什么
var x = input || "default value"
如果输入未定义,我可以设置默认值。但是,我希望输入是一个数字,在input == 0
的情况下,我想要x==0
。
我知道我可以使用三元运算符并执行类似
的操作var x = typeof(input) !== "undefined" ? input : "default value"
有一种不那么冗长的方法吗?
答案 0 :(得分:1)
我所知道的最实用,更简洁的方法是使用帮助函数
function def(input, defvalue){
return (typeof(input) !== "undefined" ? input : "default value");
}
var x = def(input, "default");
但它会评估默认值,即使你最终没有使用它,所以语义也略有不同。
除此之外,我认为Coffeescript有几个operators来做你想做的事情,但是他们认为null和undefined是等价的(因此等价的JS将是input != null ? input : defvalue
)。
答案 1 :(得分:1)
我想接受一个输入,并有条件地将它设置为另一个变量,如果它是一个数字。
var x = isFinite(input) ? input : "default value";
警告:如果输入为null,则仍将x
设置为null。但也许这就是你要找的东西 - 不确定它能缩短多少。
答案 2 :(得分:0)
如果您期望number
类型并希望将x
设置为默认值,则可以尝试:
var x = (input === +input) ? input : "default value";
+
运算符尝试将input
转换为数字类型。如果它不是数字,它将返回NaN
。如果它是一个数字,但input
实际上是一个字符串,那么严格的===
标识比较将返回false。
这样做的问题:
var x = typeof(input) !== "undefined" ? input : "default value"
null
将被视为有效输入,因为typeof(null)
为object
。