在javascript中键入检查

sov*_*ova 68 javascript types

如何检查变量当前是否为整数类型?我已经为此寻找了某种资源,我认为===运算符很重要,但我不确定如何检查变量是否为整数(或者是一个数组)

Que*_*tin 114

变量永远不会是JavaScript中的整数类型 - 它不区分不同类型的数字.

您可以测试变量是否包含数字,以及该数字是否为整数.

(typeof foo === "number") && Math.floor(foo) === foo
Run Code Online (Sandbox Code Playgroud)

如果变量可能是包含整数的字符串,并且您想要查看是否是这种情况:

foo == parseInt(foo, 10)
Run Code Online (Sandbox Code Playgroud)

  • *"它不区分不同类型的数字"*这是因为没有不同类型的数字.*JS中的所有*数值都是64位浮点数. (4认同)
  • 你也可以使用isNaN(foo)http://www.w3schools.com/jsref/jsref_NaN.asp而不是typeof (2认同)
  • 由于与ECMAScript 2015 [* Number.isInteger *](http://www.ecma-international.org/ecma-262/6.0/index.html#sec-isinteger)函数不一致,因此应更新此答案。对于* Infinity *,它应该返回false,而不是true。 (2认同)

dat*_*dat 13

这些天,ECMAScript 6(ECMA-262)"在房子里".用Number.isInteger(x)问你要问关于x的类型的问题:

js> var x = 3
js> Number.isInteger(x)
true
js> var y = 3.1
js> Number.isInteger(y)
false
Run Code Online (Sandbox Code Playgroud)


ken*_*bec 6

如果模数%1为0,则数字为整数

function isInt(n){
    return (typeof n== 'number' && n%1== 0);
}
Run Code Online (Sandbox Code Playgroud)

这只有javascript得到 - 比如说+ - 十到十五.

isInt(Math.pow(2,50)+.1)返回true,同样如此

Math.pow(2,50)+.1 == Math.pow(2,50)// true