我正在检查2个给定值的乘积是否为数字。如果产品是NaN,我想提示错误。
问题在于,对于所有值(即使它是NaN),它不会抛出错误。
这是我的代码
function multiply (val1, val2) {
if ((val1 * val2) === NaN) {
alert('Please provide number for multiplication');
} else {
return (val1 * val2);
}
}
答案 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
才会解析为真。