通过与NaN比较检查输入是否是JavaScript中的数字而不使用isNaN()

时间:2016-03-12 16:50:14

标签: javascript type-conversion

我尝试使用下面的代码检查用户输入的输入是否为数字。它没有用。

var a = Number(prompt("Enter a number"));
if (a !== NaN) {
    console.log("yes");
}
else {
    console.log("no");
}

当输入不是数字且输出为NaN时,我尝试打印a的值。但是,这段代码仍然不起作用。我知道我可以使用isNaN(),但为什么我的代码不起作用?还有其他方法可以检查输入是否为数字而不使用isNaN()?

5 个答案:

答案 0 :(得分:2)

尝试isFinite()方法

var a = Number(prompt("Enter a number"));
if (isFinite(a)) {
    console.log("yes");
}
else {
    console.log("no");
}

答案 1 :(得分:2)

尝试使用typeof运算符测试输入值:

if(typeof a ==="number"){ 
   console.log(a+" is a number"); 
}

以下是文档:https://msdn.microsoft.com/en-us/library/259s7zc1(v=vs.94).aspx

更新:

还要尝试使用旧帖子的答案:https://stackoverflow.com/a/9716488/2862130

答案 2 :(得分:2)

  

与JavaScript中的所有其他可能值不同,不可能依赖等于运算符(==和===)来确定值是否为NaN,因为NaN == NaN和NaN === NaN评估为假。因此,isNaN函数的必要性。

MDN Documentation

答案 3 :(得分:0)

我经常使用

    +a !== +a

NaN!= NaN !!

答案 4 :(得分:0)

正如georg所指出的,最简单的方法是使用if(a === a),因为NaN!== NaN