jsで数値かどうかを判断するいくつかの方法

一、タイプ、インスタンス、Number.isInteger

  • typeof は、
    typeof値が基本型であるかどうかを判断しますnumber
const num = 1;
typeof num === 'number'; // true
  • instanceof は、
    instanceof値がラッパー クラスであるかどうかを判断しますNumber
const num = new Number(1);
num instanceof Number; // true
  • Number.isInteger は、
    Number.isInteger値が以下であるかどうかを決定します整数
Number.isInteger(1);   // true
Number.isInteger('1'); // false
Number.isInteger(1.1); // false

これらの方法の欠点は、型でしか判断できず、文字列が値であるかどうかを判断できないことです。

二、parseInt、parseFloat

parseInt解析および解析parseFloat中に不正な文字が検出された場合は、解析された値が返されます数值つまり、文字列が头部である限り合法数值、全体が値でなくても、値を解析できます。たとえば123abc、解析されます123

const a = '123abc';
parseFloat(a); // 123
const b = 'a123abc';
parseFloat(b); // NaN
const c = '0123abc';
parseFloat(c); // 123
const d = 'a0123abc';
parseFloat(d); // NaN

三、isNaN、isFinite

  • NaN、と書いてありますNot-a-Number2 つの NaN が等しいかどうかを直接比較することはできません。これは、それらが数値ではないことだけがわかっており、それらが何であるかが不確かであるため、等しいと比較することはできません。
  • isNaN(value)Number(value)結果がNaN返される場合はtrue、そうでない場合は return false
  • isFinite(value)、とNumber(value)の結果が数值等しくない場合はInfinityreturn -Infinitytrueそれ以外の場合は return false
Number(true); // 1
Number(false); // 0
Number(null); // 0
Number(undefined); // NaN
Number(''); // 0
Number('123'); // 123
Number(123); // 123
Number('abc'); // NaN

isNaN(true); // false
isNaN(false); // false
isNaN(null); // false
isNaN(undefined); // true
isNaN(''); // false
isNaN('123'); // false
isNaN(123); // false
isNaN('abc'); // true

isFinite(true); // true
isFinite(false); // true
isFinite(null); // true
isFinite(undefined); // false
isFinite(''); // true
isFinite('123'); // true
isFinite(123); // true
isFinite('abc'); // false

四、Number.isNaN、Number.isFinite

  • Number.isNaN(value)value返される場合はNaN返されtrue、そうでない場合は返されますfalse
  • Number.isFinite(value)value数値と等しくないInfinity場合-Infinityを返しtrue、それ以外の場合は を返しますfalse
  • グローバル関数 と比較するとisNaN()Number.isNaN()パラメータをそれ自体で数値に変換することはなく、NaNパラメータが の値を持つ数値である場合にのみ返されますtrue
Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0)       // true
Number.isNaN(true); // false
Number.isNaN(false); // false
Number.isNaN(null); // false
Number.isNaN(undefined); // false
Number.isNaN(''); // false
Number.isNaN('123'); // false
Number.isNaN(123); // false
Number.isNaN('abc'); // false

Number.isFinite(true); // false
Number.isFinite(false); // false
Number.isFinite(null); // false
Number.isFinite(undefined); // false
Number.isFinite(''); // false
Number.isFinite('123'); // false
Number.isFinite(123); // true
Number.isFinite('abc'); // false
  • Number.isNaNに相当:
Number.isNaN = Number.isNaN || function(value) {
    
    
    return typeof value === "number" && isNaN(value);
}
  • Number.isFiniteに相当:
if (Number.isFinite === undefined) Number.isFinite = function(value) {
    
    
    return typeof value === 'number' && isFinite(value);
}

5、正規表現

const exp = /^[0-9]+.?[0-9]*/;
exp.test('123');   // true
exp.test('a123'); // false
exp.test(123); // true

参考

おすすめ

転載: blog.csdn.net/letianxf/article/details/129724347