0


js判断是否为数字的几种方式

一、typeof、instanceof、Number.isInteger

  • typeoftypeof判断值是不是基本类型number
const num =1;typeof num ==='number';// true
  • instanceofinstanceof判断值是不是包装类Number
const num =newNumber(1);
num instanceofNumber;// true
  • Number.isIntegerNumber.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);// 123const b ='a123abc';parseFloat(b);// NaNconst c ='0123abc';parseFloat(c);// 123const d ='a0123abc';parseFloat(d);// NaN

三、isNaN、isFinite

  • NaN,它表示Not-a-Number。两个NaN无法直接比较相等,因为我们只知道它不是数值,是啥不确定,也就无法比较相等。
  • isNaN(value),如果Number(value)的结果为NaN返回true,否则返回false
  • isFinite(value),如果Number(value)的结果为数值,且不等于Infinity-Infinity返回true,否则返回false
Number(true);// 1Number(false);// 0Number(null);// 0Number(undefined);// NaNNumber('');// 0Number('123');// 123Number(123);// 123Number('abc');// NaNisNaN(true);// falseisNaN(false);// falseisNaN(null);// falseisNaN(undefined);// trueisNaN('');// falseisNaN('123');// falseisNaN(123);// falseisNaN('abc');// trueisFinite(true);// trueisFinite(false);// trueisFinite(null);// trueisFinite(undefined);// falseisFinite('');// trueisFinite('123');// trueisFinite(123);// trueisFinite('abc');// false

四、Number.isNaN、Number.isFinite

  • Number.isNaN(value),如果valueNaN返回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){returntypeof value ==="number"&&isNaN(value);}
  • Number.isFinite等价于:
if(Number.isFinite ===undefined) Number.isFinite=function(value){returntypeof value ==='number'&&isFinite(value);}

五、正则表达式

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

参考

  • JavaScript 判断是否为数字的几种方式

本文转载自: https://blog.csdn.net/letianxf/article/details/129724347
版权归原作者 一天一丢丢 所有, 如有侵权,请联系我们删除。

“js判断是否为数字的几种方式”的评论:

还没有评论