在一个条件下检查NaN,null和> = 0
我有一个变种;
它的值可以是NaN, null and any +ve/-ve number including 0.
我需要一个过滤掉a的所有值的条件,只有> = 0的值在if条件下产生一个真值。
实现这一目标的最佳方法是什么,我不希望使用||
连接3个不同的条件
typeof x == "number" && x >= 0
其工作原理如下:
-
null
–typeof null == "object"
所以表达式的第一部分返回false -
NaN
– 类型typeof NaN == "number"
但NaN
不大于,小于或等于包括其自身在内的任何数字,因此表达式的第二部分返回false -
number
– 大于或等于零的任何其他number
表达式返回true
NaN
不是>= 0
,因此您需要做的唯一排除是null
:
if (a !== null && a >= 0) { ... }
这似乎运作良好:
if (parseFloat(x) === Math.sqrt(x*x))...
测试:
isPositive = function(x) { return parseFloat(x) === Math.sqrt(x*x) } a = [null, +"xx", -100, 0, 100] a.forEach(function(x) { console.log(x, isPositive(x))})
过滤这些值的最佳解决方案是2条件,它就像;
if(a!=undefined && a>=0){ console.log('My variable is filtered out.') }
我不确定,但没有单一的条件使用它。
哦……但我真的找到了……它很简单。
parseInt(null)= NaN。
所以if(parseInt(a)>=0){}
会做… Yayyee
既然您标记了jQuery,请查看$.isNumeric()
if($.isNumeric(a) && a >= 0)