Javascript 为什么任何输入都返回此函数中的第一个条件?
下面的函数需要输入一个字符串,然后返回它是数字,不是数字还是空 我整天都在研究这个问题——当我测试它时,不管我在函数中输入什么,它总是执行第一个条件“是一个数字”,我完全搞不懂为什么。有人知道我做错了什么吗Javascript 为什么任何输入都返回此函数中的第一个条件?,javascript,Javascript,下面的函数需要输入一个字符串,然后返回它是数字,不是数字还是空 我整天都在研究这个问题——当我测试它时,不管我在函数中输入什么,它总是执行第一个条件“是一个数字”,我完全搞不懂为什么。有人知道我做错了什么吗 function validateInput(testInput) { if (typeof parseInt(testInput) === 'number') { return "Is a Number"; } else if (isNaN(pa
function validateInput(testInput) {
if (typeof parseInt(testInput) === 'number') {
return "Is a Number";
} else if (isNaN(parseInt(testInput)) === true) {
return "Not a Number";
} else if (testInput === "") {
return "Empty";
}
}
如果您使用的是parseInt(testInput),它将转换为数字类型格式。
删除parseInt,它将更新。
parseInt
如果字符串无法转换为数字,则返回NaN
<代码>NaN的类型,然而,是“number”
。您可以重新构造条件,以便首先执行更具体的测试:
function validateInput(testInput) {
if(testInput === "") return "Empty";
if(isNaN(testInput)) return "Not a Number";
return "Is a Number";
}
parseInt('foo')
将返回NaN,尽管代表“不是数字”
.
函数validateInput(testInput){
如果(testInput==“”)
{
返回“空”;
}
如果(!isNaN(parseInt(testInput)),则为else
{
返回“是一个数字”;
}
返回“不是数字”;
}
const span=document.querySelector('span');
document.querySelector('input')。addEventListener('input',function()
{
span.innerText=validateInput(此.value);
});代码>
因为parseInt
将始终返回类型为“number”
的内容。读这本书。请尝试使用浏览器的。使用(点击F12
)。尝试console.log(parseInt(“不是一个数字”,10),类型为NaN)
parseInt()
总是返回一个“数字”(偶数NaN
)parseInt()
不会告诉你某个东西是否是数字:parseInt(“123-not-a-number”)
返回123
测试测试类型输入==“number”&&!isNaN(测试输入)
直接输入;毕竟,你说“是一个数字”。如果要测试它是一个数字还是一个可以转换为数字的字符串,请在和&
之前使用(typeof testInput==“number”| | typeof testInput==“string”)
。这一切都取决于你实际上要测试什么。对于你的函数应该做什么没有明确的说明。