我尝试将负值与“ 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。
它永远不会进入条件。为什么?
答案 0 :(得分:5)
0
是一个falsy
值。如果if
为min
,它将永远不会进入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,而false
为0 && 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中返回零。 有关更多详细信息,请参阅第一条评论