number * string是NaN但是在检查时是否NaN返回false

时间:2014-08-13 22:28:29

标签: javascript

我正在检查2个给定值的乘积是否为数字。如果产品是NaN,我想提示错误。

问题在于,对于所有值(即使它是NaN),它不会抛出错误。

这是我的代码

function multiply (val1, val2) {
if ((val1 * val2) === NaN) {
alert('Please provide number for multiplication');
} else {
return (val1 * val2);
}

}

3 个答案:

答案 0 :(得分:3)

您无法使用普通比较运算符来检查NaN。使用isNaN()

if (isNaN(val1 * val2)) { 

答案 1 :(得分:1)

改为

if (isNaN(val1 * val2))

答案 2 :(得分:0)

你能做到的另一种方式是NaN的一个不寻常特征的一部分。这是javascript中唯一与自身不相同的东西。这正是您的代码无效的原因,因为NaN永远不会等于NaN,因此您可能会颠倒您的逻辑

function multiply (val1, val2) {
    var product = val1 * val2;
    if (product != product) { //i.e. NaN
        alert('Please provide number for multiplication');
    } else {
        return product;
    }
}

检查产品是否不等于产品只有NaN才会解析为真。