我如何检查如果一个变量是一个整数在JavaScript,并抛出一个警告,如果它不是?我试过了,但不管用:

<html>
    <head>
        <script type="text/javascript">
            var data = 22;
            alert(NaN(data));
        </script>
    </head>
</html>

当前回答

接受的答案不为我工作,因为我需要检查int/float和字母。因此,尝试这将工作的int/float和字母检查

function is_int(value){
        if( (parseInt(value) % 1 === 0 )){
            return true;
        }else{
            return false;
        }
}

使用

is_int(44);   // true
is_int("44");   // true
is_int(44.55);  // true
is_int("44.55");  // true
is_int("aaa");  // false  

其他回答

function isInteger(argument) { return argument == ~~argument; }

用法:

isInteger(1);     // true<br>
isInteger(0.1);   // false<br>
isInteger("1");   // true<br>
isInteger("0.1"); // false<br>

or:

function isInteger(argument) { return argument == argument + 0 && argument == ~~argument; }

用法:

isInteger(1);     // true<br>
isInteger(0.1);   // false<br>
isInteger("1");   // false<br>
isInteger("0.1"); // false<br>

检查像poster这样的整数是否需要:

if (+data===parseInt(data)) {return true} else {return false}

注意+在data前面(将字符串转换为数字),===表示精确。

下面是一些例子:

data=10
+data===parseInt(data)
true

data="10"
+data===parseInt(data)
true

data="10.2"
+data===parseInt(data)
false

为什么没有人提到Number.isInteger() ?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger

为我完美地工作,并解决了NaN开始一个数字的问题。

你可以使用一个简单的正则表达式:

function isInt(value) {
    var er = /^-?[0-9]+$/;
    return er.test(value);
}

试试这个:

let number = 5;
if (Number.isInteger(number)) {
    //do something
}