为什么这会回归NaN?

时间:2011-08-10 01:49:24

标签: javascript jquery nan

model.qty = (parseInt($('#amendOrderQty').val()) == NaN) ? 
  0 : 
  parseInt($('#amendOrderQty').val());

// model.qty === NaN when #amendOrderQty is left blank

当字段留空时,我试图将值设置为0。为什么这不起作用?

3 个答案:

答案 0 :(得分:3)

您不能将比较运算符与NaN一起使用,它将始终返回false

使用isNaN()代替

var qty = parseInt($('#amendOrderQty').val());
model.qty = isNaN(qty) ? 0 : qty;

答案 1 :(得分:1)

您无法直接将某些内容与NaN进行比较,因为

NaN === NaN

总是返回false。


鉴于此,您应该替换

parseInt($('#amendOrderQty').val()) == NaN

isNan(parseInt($('#amendOrderQty').val()))


你的代码,重构和修复,应该是这样的:

var orderQtyVal = parseInt($('#amendOrderQty').val());
model.qty = isNaN(orderQtyVal) ? 0 : orderQtyVal;

答案 2 :(得分:1)

改为使用“isFinite”。

var x = parseInt($('#amendOrderQty').val();
model.qty = isFinite(x) ? x : 0;