JavaScript判断是否为数值类型 - js的数据类型

需求

数值,或者数值型字符串,比如"123"可以通过校验。
其他类型不能通过校验。

举例

输入结果
145
“145”
“145ccc”×
true×
undefined×
null×
对象×

分析

首先要明确,js中一共有7种数据类型:
数值字符串布尔值undefinednull对象symbol(ES6)
其中,对象包括:狭义的对象(object);数组(array);函数(function)
根据需求,我们需要的是先判断是数值或字符串,然后排除掉非数值型字符串

判断数据类型

js用来判断数据类型的方法有3个:
typeofinstanceofObject.prototype.toString,其中,typeof对各数据类型的结果如下:

数据类型特例typeof运算结果
数值“number”
字符串“string”
布尔值“boolean”
undefined“undefined”
null“object”
对象“object”
函数“function”
Symbol“symbol”

可知,如果使用typeof可以找到数值和字符串类型。

排除非数值型字符串

js中用于将字符串转换成数值的方法包括:Number、parseInt、parseFloat

Number

Number的转换结果如下:

数据类型特例typeof运算结果
数值数值
字符串NaN
数值型字符串数值
空字符串0
布尔值0/1
undefinedNaN
null0
对象NaN
单元素数组元素值
空数组0

parseInt、parseFloat

注意定义和以下两条规则即可。

定义:用于将一个字符串转为整数/浮点数

  1. 如果参数不是字符串或者字符串的第一个字符不能转化为整数 / 浮点数,则返回NaN
    e.g.
parseFloat([]) // NaN
parseFloat('F235') // NaN
parseFloat('') // NaN
  1. 如果字符串包含不能转为整数/浮点数的字符,则不再进行往后转换返回已经转好的部分
    e.g.
parseFloat('3.14more non-digit characters') // 3.14

综上,可知,不能使用parseInt和parseFloat来判断数值型字符串,因此,只能使用Number方法。

补充

Number、parseInt、parseFloat都会自动过滤字符串前导和后缀的空格

解决方法

typeof value === 'number' || (typeof value === 'string' && value !== ''&&!isNaN(Number(value)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值