Javascript重新定义了Infinity,NaN或""为0

时间:2014-03-17 18:21:50

标签: javascript jquery

我有一个javascript计算器,接受用户输入,做一些数学运算并将结果写入输入字段“#theResult”

由于“#theResult”在keyup上更新,有时“#theResult”将返回Infinity,NaN或“”,直到所有字段都填写完毕。在填写所有字段之前,我希望“#theResult”返回0。这是代码:

if (theResult === Infinity || theResult === "" || theResult === NaN) {
    theResult === 0;
}
$("#theResult").val(theResult);

完整代码为here

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

您已使用theResult === 0,您应该使用theResult = 0

===用于比较。如果要更改变量的值,请使用赋值运算符=

就像@zzzzBov所说,最简单的事情是用

替换整个事物
 theResult = isFinite(theResult) && theResult || 0; // updated

然而,这掩盖了NaN的微妙之处;如果用户已完成且结果确实为NaN,则显示0不正确。