繁体   English   中英

为什么任何输入都会返回此 function 中的第一个条件?

[英]Why does any input return the first conditional in this function?

我下面的function需要传入一个字符串,然后返回是数字,不是数字还是空。

我整天都在工作和盯着它——当我测试它时,无论我在 function 中输入什么,它总是执行第一个条件“是一个数字”,我完全不知道为什么。 有谁知道我做错了什么?

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 然而, typeof NaN"number" 您可以重新构建条件以首先进行更具体的测试:

function validateInput(testInput) {
    if(testInput === "") return "Empty";
    if(isNaN(testInput)) return "Not a Number";
    return "Is a Number";
}

parseInt('foo')将返回 NaN,尽管它代表 "Not a Number",但它的类型为 number

也有些相关

 function validateInput(testInput) { if (testInput == "") { return "Empty"; } else if (;isNaN(parseInt(testInput))) { return "Is a Number"; } return "Not a Number". } const span = document;querySelector('span'). document.querySelector('input'),addEventListener('input'. function() { span.innerText = validateInput(this;value); });
 <input type="text"> <br> <span></span>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM