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

时间:2016-07-08 21:19:06

标签: javascript

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

如果有人能帮我解决这个问题,我会非常感激

function isNumeric(val){

    var patt =  new RegExp('^[0-9]+$');

    return (patt.test(val) || Math.floor(val) !== val);



}


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

2 个答案:

答案 0 :(得分:0)

此外,您可以参考下面的小提琴。正则表达式模式是成功的,但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??

答案 1 :(得分:0)

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

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

然后成为:

false || NaN !== "Hello"

然后成为:

false || true

如果||的任何一个参数都是真实的,那么true会返回一个真值,这会返回var merged = new List<Item>(items1); merged.AddRange(items2); IEnumerable<Item> grouped = merged .GroupBy((item) => new { item.Country, item.State, item.City, item.date }) .Select((item) => item.OrderByDescending(i => i.population).FirstOrDefault()); foreach(Item item in grouped) { Console.WriteLine($"{item.Country}, {item.State}, {item.City}, {item.date}, {item.population}"); }

请参阅Is there a (built-in) way in JavaScript to check if a string is a valid number?了解如何正确执行检查。