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

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

当前回答

试试这个:

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

其他回答

你也可以试试这种方法

var data = 22;
if (Number.isInteger(data)) {
    console.log("integer");
 }else{
     console.log("not an integer");
 }

or

if (data === parseInt(data, 10)){
    console.log("integer");
}else{
    console.log("not an integer");
}

假设你对问题中的变量一无所知,你应该采用这种方法:

if(typeof data === 'number') {
    var remainder = (data % 1);
    if(remainder === 0) {
        // yes, it is an integer
    }
    else if(isNaN(remainder)) {
        // no, data is either: NaN, Infinity, or -Infinity
    }
    else {
        // no, it is a float (still a number though)
    }
}
else {
    // no way, it is not even a number
}

简单来说:

if(typeof data==='number' && (data%1)===0) {
    // data is an integer
}

在今天的浏览器中,Number.isInteger()是一种方式,就像之前解释的许多答案一样,但我遇到了一个常见的问题,它发生在我构建API的时候。

所以在API请求中,我们以字符串的形式接收属性,因此Number.isInteger()将返回false。

如果我们尝试用Number.isInteger(parseInt())检查它,那么值就像1.1或1。Asd返回true

为了解决这个问题,我创建了一个函数,它检查值是否为整数,将其作为整数或字符串传递

function isNumber(value) {
    return ([...value.toString()]
            .filter(x => [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' ]
            .indexOf(x) >= 0))
            .length == Math.max(value.toString().length, 1)
}

Math.max()部分用于处理空字符串

if(Number.isInteger(Number(data))){
    //-----
}

你可以tryNumber.isInteger(Number(value))如果value可能是一个字符串形式的整数,例如var value = "23",你想要这个值为true。避免尝试Number.isInteger(parseInt(value)),因为这并不总是返回正确的值。例如,如果var value = "23abc",并且你使用parseInt实现,它仍然会返回true。

但是如果你想要严格的整数值,那么可能Number.isInteger(value)就可以了。