web-dev-qa-db-ja.com

JavaScriptでの型チェック

変数が現在整数型かどうかを確認するにはどうすればよいですか?私はこれのために何らかのリソースを探しましたが、===演算子は重要だと思いますが、変数が整数(またはそのことについては配列)であるかどうかを確認する方法がわかりません

67
sova

JavaScriptでは、変数が整数型になることはありません—異なる型の数値を区別しません。

変数に数値が含まれているかどうか、およびその数値が整数かどうかをテストできます。

(typeof foo === "number") && Math.floor(foo) === foo

変数が整数を含む文字列であり、それが当てはまるかどうかを確認したい場合:

foo == parseInt(foo, 10)
112
Quentin

最近では、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
12
dat

モジュロ%1が0-の場合、数値は整数です

_function isInt(n){
    return (typeof n== 'number' && n%1== 0);
}
_

これは、javascriptが10から15までと言うのと同じくらい良いです。

isInt(Math.pow(2,50)+.1)Math.pow(2,50)+.1 == Math.pow(2,50)と同様にtrueを返します

6
kennebec
var a = 1;

if (typeof a == 'number') {
  // ...
}
1
Kai

整数に興味があることは知っているので、返事はしませんが、浮動小数点数をチェックしたいなら、これを行うことができます。

function isFloat( x )
{
    return ( typeof x === "number" && Math.abs( x % 1 ) > 0);
}

注:これは、.0(または論理的に同等な0 'の数)で終わる数値をINTEGERとして扱う場合があります。その場合、浮動小数点値を検出するには、実際に浮動小数点精度エラーが発生する必要があります。

例.

alert(isFloat(5.2));   //returns true
alert(isFloat(5));     //returns false
alert(isFloat(5.0));   //return could be either true or false
0
Dan

このコードを試してください:

 alert(typeof(1) == "number");
0
eSniff

Runtyper -===(およびその他の操作)のオペランドの型チェックを実行するツールもご覧ください。
たとえば、厳密な比較x === yx = 123, y = "123"がある場合、自動的にtypeof x, typeof yをチェックし、コンソールに警告を表示します。

異なるタイプの厳密な比較:123(数値)=== "123"(文字列)

0
vitalets

YourJS などの非常に少数のユーティリティライブラリは、何かが配列であるか、何かが整数であるか、他の多くの型であるかを判断するための機能を提供します。 YourJSは isInt を定義します。値が数値であるかどうかを確認し、次に1で割り切れるかどうかを確認します。

_function isInt(x) {
  return typeOf(x, 'Number') && x % 1 == 0;
}
_

上記のスニペットは このYourJSスニペット から取られたもので、typeOfがライブラリによって定義されているためにのみ機能します。主にtypeOf()isInt()、およびisArray()などのタイプチェック関数のみを備えたYourJSの最小限のバージョンをダウンロードできます。 http:// yourjs .com/snippets/build/34,2

0
Chris West