在一个条件中检查NaN,null和> = 0

时间:2013-05-10 07:42:36

标签: javascript jquery

我有一个var a;

其值可以是NaN, null and any +ve/-ve number including 0.

我需要一个过滤掉所有值的条件,只有> = 0值才会在if条件下产生真值。

实现这一目标的最佳方法是什么,我不希望使用||加入3个不同的条件

7 个答案:

答案 0 :(得分:7)

typeof x == "number" && x >= 0

其工作原理如下:

  • null - typeof null == "object"因此表达式的第一部分返回false
  • NaN - typeof NaN == "number"NaN不大于,小于或等于包含其自身的任何数字,因此表达式的第二部分返回false < / LI>
  • number - 大于或等于零的任何其他number表达式返回true

答案 1 :(得分:2)

几周前我遇到了同样的问题,我解决了这个问题:

if(~~Number(test1)>0) {
  //...
}

http://jsfiddle.net/pT7pp/2/

答案 2 :(得分:1)

这似乎运作良好:

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))})

答案 3 :(得分:1)

NaN不是>= 0,因此您需要做的唯一排除是null

if (a !== null && a >= 0) {
    ...
}

答案 4 :(得分:1)

过滤这些值的最佳解决方案是2条件,就像是;

 if(a!=undefined && a>=0){
      console.log('My variable is filtered out.')
    }

我不确定但是没有单一的条件使用它。

答案 5 :(得分:1)

哦......但我确实找到了...... 它很简单。

parseInt(null)= NaN。

所以if(parseInt(a)>=0){}会...... Yayyee

答案 6 :(得分:0)

由于您标记了jQuery,请查看$.isNumeric()

if($.isNumeric(a) && a >= 0)