检查变量是不是只是JavaScript中的整数的最佳方法[重复]

Posted

技术标签:

【中文标题】检查变量是不是只是JavaScript中的整数的最佳方法[重复]【英文标题】:Best way to check that a variable is only an integer in JavaScript [duplicate]检查变量是否只是JavaScript中的整数的最佳方法[重复] 【发布时间】:2012-11-06 21:19:19 【问题描述】:

可能重复:How to check if a number is float or integer?

检查变量是否为整数的最佳方法是什么?

在 Python 中你可以这样做:

 if type(x) == int

在 JS 中是否有同样优雅的等价物?

【问题讨论】:

这很好地涵盖了它:***.com/questions/3885817/… 【参考方案1】:

使用isNaN(不是数字——但要注意逻辑被否定)并与parseInt结合:

function is_int(x)

    return (!isNaN(x) && parseInt(x) == x)

作为suggested here,以下也可以:

function isInt(n) 
   return n % 1 === 0;

【讨论】:

【参考方案2】:

我没有测试过,但我建议:

if (Math.round(x) == x) 
    // it's an integer

Simplistic JS Fiddle.

【讨论】:

稍微短一点,虽然不完全相同:if (~~x == x) 如果您将'1' 放入该 jsFiddle,它会返回 true(在 Chrome 上)。我认为这是不正确的行为? @AlastairPitts:不,因为==,它只是强制转换为数字,如果您不想将字符串转换为数字,请使用=== @elclanrs:哦,是的,我一直在 JS 中忘记这一点:/【参考方案3】:

javascript 提供 typeof

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/typeof

   // Numbers
   typeof 37 === 'number';
   typeof 3.14 === 'number';
   typeof Math.LN2 === 'number';
   typeof Infinity === 'number';
   typeof NaN === 'number'; // Despite being "Not-A-Number"
   typeof Number(1) === 'number'; // but never use this form!

【讨论】:

...是的,但它永远不会导致“整数”... 我认为“数字”足以满足我的实际需要。【参考方案4】:

整数的 parseFloat() 和 parseInt() 等效项的数值相同。因此你可以这样做:

function isInt(value) 
    return (parseFloat(value) == parseInt(value)) && !isNaN(value);

然后

if (isInt(x)) // do work

【讨论】:

你可以去掉 ? true : false; 并且会更短,并且应该仍然这样做。 大声笑,是的,想多了,我会解决

以上是关于检查变量是不是只是JavaScript中的整数的最佳方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查浮点变量是不是为整数的最可靠方法是啥?

检查未知对象中的对象是不是存在的最有效的Javascript方法[重复]

如何在javascript中检查变量类型[重复]

javascript中的类型检查

JavaScript 检查变量是不是存在(已定义/初始化)

JavaScript 检查变量是不是存在(已定义/初始化)