通过在不使用isNaN()的情况下与NaN进行比较,检查输入是否为JavaScript中的数字

通过在不使用isNaN()的情况下与NaN进行比较,检查输入是否为JavaScript中的数字,javascript,type-conversion,Javascript,Type Conversion,我试图用下面的代码检查用户输入的是否是数字。它不起作用 var a = Number(prompt("Enter a number")); if (a !== NaN) { console.log("yes"); } else { console.log("no"); } 当输入不是数字,输出是NaN时,我尝试打印a的值。但是,这个代码仍然不起作用。我知道我可以使用isNaN(),但为什么我的代码不能工作?还有没有其他方法可以在不使用isNaN()的情况下检查输入是否为数字?尝

我试图用下面的代码检查用户输入的是否是数字。它不起作用

var a = Number(prompt("Enter a number"));
if (a !== NaN) {
    console.log("yes");
}
else {
    console.log("no");
}
当输入不是数字,输出是NaN时,我尝试打印a的值。但是,这个代码仍然不起作用。我知道我可以使用isNaN(),但为什么我的代码不能工作?还有没有其他方法可以在不使用isNaN()的情况下检查输入是否为数字?

尝试
isFinite()
方法

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

    +a !== +a

NaN
!=<代码>NaN

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

if(typeof a ==="number"){ 
   console.log(a+" is a number"); 
}
以下是文件:

更新:

试着使用一篇旧文章的答案:

与JavaScript中所有其他可能的值不同,不可能依赖相等运算符(==和===)来确定值是否为NaN,因为NaN==NaN和NaN==NaN的计算结果都为false。因此,有必要使用isNaN函数


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

我一直感到无尽的沮丧,因为NaN的类型是“数字”。它的字面意思是“不是一个数字”…我读取变量a,所以在我检查类型之前,我必须手动将它转换为数字。在这种情况下,您的代码将无法工作。我明白了,请检查我的更新,我希望它将对您有所帮助(请参见:)
NaN
是唯一不等于自身的值,因此
a!==只有当a是
NaN
时,a才为真。更多。效果很好,谢谢