检查变量是否为 Javascript 中的整数

Checking if variable is an Integer in Javascript

我开始在学校学习 JavaScript,其中一项作业要求我检查用户的输入是否为整数。

此代码在 CHROME 上对我不起作用。

var person = prompt("Please enter your name", "Enter Name");
alert("Hello " + person);
var age = prompt("Please enter your age", "Enter age");

if (age == parseInt(age, 10))
    alert("data is integer")
else
    alert("data is not an integer")

无论我在提示框中输入字符串还是整数,它总是显示 "data is not an integer" 消息。

你可以试试这个来检查它是否是一个整数:

function isInteger(x) {
        return x % 1 === 0;
    }

提示总是 return 一个字符串,所以在你的情况下:

var integerAge = parseInt(age);

if(!isNaN(integerAge) && age === '' + integerAge)
    alert("data is integer")
else
    alert("data is not an integer")

在年龄的情况下,您还可能会在下一个验证步骤中检查它是否为具有一些 integerAge >= 0 或自定义最小值和最大值的正整数。

提示总是 return 字符串,但由于 JS 是松散类型的语言,这些字符串将在需要时自动转换为数字(整数在 JS 中称为数字),这就是为什么您的示例 工作正常.

为了更好地检查,您可以使用!isNaN

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

alert(!isNaN('10'));
alert(!isNaN('abc'));
alert(!isNaN(10));


对于疯狂的反对者,这是 OP 代码的优化版本:

var age = parseInt(prompt("Please enter your age", "Enter age"), 10);

alert(isNaN(age) ? 'Not a number' : age);