Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么任何输入都返回此函数中的第一个条件?_Javascript - Fatal编程技术网

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”)
。这一切都取决于你实际上要测试什么。对于你的函数应该做什么没有明确的说明。