检查变量是不是只是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中的整数的最佳方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章