一、typeof、instanceof、Number.isInteger
- typeof
typeof
判断值是不是基本类型number
:
const num =1;typeof num ==='number';// true
- instanceof
instanceof
判断值是不是包装类Number
:
const num =newNumber(1);
num instanceofNumber;// 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);// 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)
,如果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){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
版权归原作者 一天一丢丢 所有, 如有侵权,请联系我们删除。
版权归原作者 一天一丢丢 所有, 如有侵权,请联系我们删除。