js判断类型为数字的方法汇总

本文汇总了JavaScript中判断变量是否为数字类型的五种方法,包括使用typeof结合isNaN、isFinite、Object.prototype.toString以及正则表达式。还讨论了各种方法的优缺点和特殊情况,如处理NaN和无穷大,并提供了相关链接深入理解原型链。
摘要由CSDN通过智能技术生成

方法一:

判断类型时,最最容易想到的就是typeof,但是如果通过typeof来判断是否为number类型,如果被判断的是NaN返回的结果也会是number,因此我们还需要用isNaN来排除NaN的情况。

function isNumber (obj) { 
    return typeof obj === 'number' && !isNaN(obj) 
}

此外isNaN()相比Number.isNaN()会把被判断的参数强制转换成数字再进行判断,而Number.isNaN()只有在参数是真正的数字类型,且值为NaN时才会返回true。

Number.isNaN(NaN)         // true
Number.isNaN(Number.NaN)  // true
Number.isNaN(0 / 0)       // true
    
Number.isNaN(null)        // false
Number.isNaN(37)          // false
Number.isNaN("37")        // false

Number.isNaN("NaN")       // false 不会隐式转换
window.isNaN('NaN')       // true 会隐式转换

方法二:

isNaN(obj)   等价于isFinite()。Infinity在js表示数字的无穷大,判断是否可用做数字的最佳方法则是isFinite(),因为该方法会筛除掉NaN和Infinity两个关键字。


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript中,有多种方法可以判断一个变量的类型是否为数字。下面是几种常用的方法: 1. typeof运算符 使用typeof运算符可以判断一个变量的类型,如果返回值为"number",则说明该变量是一个数字。 ```javascript typeof 123 === 'number' // true ``` 需要注意的是,typeof运算符对于NaN返回的也是"number",因此需要进一步判断。 2. isNaN函数 isNaN函数用于判断一个变量是否为NaN,如果是NaN则返回true,否则返回false。因此可以使用isNaN函数来判断一个变量是否为数字。 ```javascript isNaN(123) === false // true isNaN('abc') === true // true ``` 需要注意的是,如果变量是一个字符串,会先尝试将其转化为数字,如果转化失败则返回true,因此需要进一步判断。 3. isFinite函数 isFinite函数用于判断一个变量是否为有限数,如果是有限数则返回true,否则返回false。因此可以使用isFinite函数来判断一个变量是否为数字。 ```javascript isFinite(123) === true // true isFinite(Infinity) === false // true ``` 需要注意的是,如果变量是一个字符串,会先尝试将其转化为数字,如果转化失败则返回false,因此需要进一步判断。 4. 正则表达式 使用正则表达式也可以判断一个变量是否为数字,如下所示: ```javascript /^\d+$/.test('123') === true // true /^\d+$/.test('abc') === false // true ``` 这个正则表达式用于匹配由一组数字组成的字符串,如果匹配成功则说明该字符串是一个数字。 综上所述,以上方法都有其局限性,需要根据实际情况选用。比较全面的判断方法是结合使用typeof、isNaN和isFinite函数,如下所示: ```javascript function isNumber(value) { return typeof value === 'number' && !isNaN(value) && isFinite(value); } ``` 这个函数通过同时判断typeof、isNaN和isFinite函数的返回值来判断一个变量是否为数字,可以满足大部分情况下的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值