Javascript简单加法工具 - NaN

时间:2014-08-21 14:39:58

标签: javascript nan performance

我正在尝试制作一个简单的添加工具,将2个值加在一起,我只是在NaN检查时遇到一点麻烦...想要打印“请插入数字”,如果是A或B,或两者都是NaN。

function getTotal() {
var a = parseInt(document.addBoxes.boxA.value);
var b = parseInt(document.addBoxes.boxB.value);
if (total != NaN) {
    total = a+b;
    document.getElementById("total").innerHTML = "The sum is " + total + ".";
}
else if (a === NaN || b === NaN){
    document.getElementById("total").innerHTML = "Please insert numbers only.";
}
else if (a === NaN && b === NaN){
    document.getElementById("total").innerHTML = "Please insert numbers only.";
}

};

此外,如果有一种性能友好的方法,或者更好的方法。

谢谢!

2 个答案:

答案 0 :(得分:2)

不需要检查NaN的每个单独值。

function getTotal() {
    var a = parseInt(document.addBoxes.boxA.value);
    var b = parseInt(document.addBoxes.boxB.value);
    var total = a + b;
    if (!isNaN(total)) {
        document.getElementById("total").innerHTML = "The sum is " + total + ".";
    } else {
        document.getElementById("total").innerHTML = "Please insert numbers only.";
    }
}

答案 1 :(得分:1)

您的代码中存在几个问题。

Line 4: if (total != NaN) {

total尚未定义。如果你不想泄漏全局变量,你应事先在var中定义它。

var total = a + b;

此外,NaN永远不会自相等,所以这种平等是危险的。使用内置的isNaN()函数来检查NaN或(因为你提到了性能友好)你可以跳过函数调用并使用:

if (total !== total) {

因为NaN是javascript中唯一不能与之相提并论的东西。请注意,我使用严格的不等号,我们不想要任何强制。这可能有点过于抽象,后来查看代码的人(包括你自己)可能已经忘记了NaN的这个独特属性,所以我在这个条件前加上一个注释,也许是MDN - Necessity of isNaN的链接页。

您的代码可能最终看起来像simonzack's answer