我如何检查如果一个变量是一个整数在JavaScript,并抛出一个警告,如果它不是?我试过了,但不管用:
<html>
<head>
<script type="text/javascript">
var data = 22;
alert(NaN(data));
</script>
</head>
</html>
我如何检查如果一个变量是一个整数在JavaScript,并抛出一个警告,如果它不是?我试过了,但不管用:
<html>
<head>
<script type="text/javascript">
var data = 22;
alert(NaN(data));
</script>
</head>
</html>
当前回答
你可以使用regexp:
function isInteger(n) {
return (typeof n == 'number' && /^-?\d+$/.test(n+''));
}
其他回答
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>
使用===运算符(严格相等),如下所示:
if (data === parseInt(data, 10))
alert("data is integer")
else
alert("data is not an integer")
你可以使用一个简单的正则表达式:
function isInt(value) {
var er = /^-?[0-9]+$/;
return er.test(value);
}
“公认的”答案是错误的(如下面的一些评论所指出的)。 这个修改可以使它工作:
if (data.toString() === parseInt(data, 10).toString())
alert("data is a valid integer")
else
alert("data is not a valid integer")
使用时要小心
num % 1
空字符串(")或布尔值(真或假)将返回为整数。你可能不想这么做
false % 1 // true
'' % 1 //true
Number.isInteger(数据)
Number.isInteger(22); //true
Number.isInteger(22.2); //false
Number.isInteger('22'); //false
内置功能在浏览器中。不支持旧浏览器
选择:
Math.round(num)=== num
然而,Math.round()对于空字符串和布尔值也会失败