负数的Javascript数字比较不起作用

时间:2019-02-25 12:06:54

标签: javascript

我尝试将负值与“ 0”进行比较,但这似乎不起作用。

var number = Number.parseInt($(this).val());
var min = Number.parseInt($(this).attr('min'));
var max = Number.parseInt($(this).attr('max'));

这是我的病情:

if (min && $(this).prop('required')) {
    if (number < min) {
        alert('ok');
            fail = true;
    }
}
  

我的最小值是0,数字是-1。

它永远不会进入条件。为什么?

4 个答案:

答案 0 :(得分:5)

0是一个falsy值。如果ifmin,它将永远不会进入0条件。

以下所有条件都将发送到else块

if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')
if ("")
if (``)

由于parseInt的返回值是数字或NaN,因此可以改用isNaN

if(!isNaN(min) && $(this).prop('required')) {
  // your code
}

答案 1 :(得分:1)

您的情况:

if(min && $( this ).prop('required'))

由于min的值为0,而false0 && anything,因此求值为false

答案 2 :(得分:1)

由于min为0,因此您的条件求值为false。您有两种选择,一种是在分析字符串值之前对其进行检查:

if($(this).attr('min').trim() && $( this ).prop('required')) {
    if (number < min) {
        alert('ok');
        fail = true;
    }
}

另一种方法是在解析数字后检查NaN,因为解析空字符串将返回NaN

if(!isNaN(min) && $( this ).prop('required')) {
    if (number < min) {
        alert('ok');
        fail = true;
    }
}

console.log('  '.trim() == false);
console.log(!isNaN(Number.parseInt('')) == false);

答案 3 :(得分:0)

(0 && true)在JavaScript中返回零。 有关更多详细信息,请参阅第一条评论