この記事では、JavaScript で整数型を判定するための最も簡単な実装方法を主に紹介し、最後に最も短く簡潔な実装方法をまとめます。
JavaScript が typeof 演算子を提供していることはわかっているので、typeof を使用して数値型かどうかを判断するのが最も簡単です。
function isNumber(obj) { return typeof obj === 'number' }
この関数は整数と浮動小数点数には問題ありませんが、NaN 値に対しても true を返すため、NaN を使用した後は誰も NaN を使って算術演算を行うことはなくなります。判定する数値です。
次に、それを改善して、Object.prototype.toString を使用してみてください。
function isNumber(obj) { return Object.prototype.toString.call(obj) === '[object Number]' }
typeof の判定と同様、NaN の場合も true を返しますが、やはりコード量が多く、望ましい結果とはなりません。 toString.call メソッドは配列 (Array) を判定するのには適していますが、数値はその能力を超えています。
さらなる改善として、isNaN 関数を使用して NaN 値を処理します。
function isNumber(obj) { return typeof obj === 'number' && !isNaN(obj) }
今回は、渡されたものが非数値(NaN または NaN に変換できる値)の場合は false が返されます
function isNumber(obj) { return typeof obj === 'number' && !isNaN(obj) } isNumber(1) // true isNumber(1.2) // true isNumber(NaN) // false isNumber( parseInt('a') ) // false
まあ、これは isNumber は良いですが、それでも、 isFinite を使用して
function isNumber(obj) { return typeof obj === 'number' && isFinite(obj) }
を判断する同等の方法があります。これまで、最短コードの数値判断は、この記事で説明した 3 番目の方法です。 isNaN関数です。以下は、世界最短の数値判定コードをグランドローンチします
function isNumber(obj) { return obj === +obj }
整数と浮動小数点数の場合は true を返し、NaN または NaN に変換できる値の場合は false を返します。
理解できないのですか? ぐ~~(╯﹏╰)
庭の友達は、これは世界で最も短い判定数値コードではなく、パラメータobjを1文字に変更できると言いました。 (⊙o⊙)その通りです。
類推すると、JS 動的言語機能 (オペレーター操作中の自動内部型変換) を使用した同様の最短の判断があります。
// 判断字符串 function isString(obj) { return obj === obj+'' } // 判断布尔类型 function isBoolean(obj) { return obj === !!obj }
上記はこの章の全内容です。その他の関連チュートリアルについては、JavaScript ビデオ チュートリアル をご覧ください。