我尝试使用下面的代码检查用户输入的输入是否为数字。它没有用。
var a = Number(prompt("Enter a number"));
if (a !== NaN) {
console.log("yes");
}
else {
console.log("no");
}
当输入不是数字且输出为NaN时,我尝试打印a的值。但是,这段代码仍然不起作用。我知道我可以使用isNaN(),但为什么我的代码不起作用?还有其他方法可以检查输入是否为数字而不使用isNaN()?
答案 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函数的必要性。
答案 3 :(得分:0)
我经常使用
+a !== +a
自NaN
!= NaN
!!
答案 4 :(得分:0)
正如georg所指出的,最简单的方法是使用if(a === a),因为NaN!== NaN