为什么我的函数在传递字符串时返回 true

Why is my function returning true when a string is passed?

本文关键字:字符串 返回 true 我的 函数 为什么      更新时间:2023-09-26

>我创建了一个函数来检查传递的参数是整数还是浮点数。但是由于某种原因,当我传入字符串时,它会继续返回 true。我不明白这是怎么回事??

如果有人能帮助我解决这个问题,我将不胜感激

function isNumeric(val){
    var patt =  new RegExp('^[0-9]+$');
    return (patt.test(val) || Math.floor(val) !== val);

}

console.log(isNumeric("Hello")); //Returns true??

此外,您可以参考下面的小提琴。正则表达式模式是成功的,但 Math.floor() 评估是有问题的。

https://jsfiddle.net/joedonahue/8uw0cr4y/1/

function isNumeric(val){
    var patt =  new RegExp('^[0-9]+$');
    return (patt.test(val));
    //return Math.floor(val) !== val;
}
alert(isNumeric("Hello")); //Returns true??

传入字符串时,具有以下表达式:

patt.test("Hello") || Math.floor("Hello") !== "Hello"

然后变成:

false || NaN !== "Hello"

然后变成:

false || true

由于如果 || 的任何一个参数为真值,则返回真值,因此返回 true

请参阅 JavaScript 中是否有一种(内置)方法来检查字符串是否为有效数字?了解如何正确执行检查。