js 判断是否是数字

转载: https://www.cnblogs.com/maxm/p/6743989.html

方法一:isNaN
isNaN()的缺点就在于 null、空格以及空串、’[123]'会被按照0来处理
NaN: Not a Number

function isRealNum(val){
    // 先判定是否为number
    if(typeof val !== 'number'){
      return false;
    }
    if(!isNaN(val)){
        return true;
    }else{
        return false;
    }
}

方法二:正则
校验只要是数字(包含正负整数,0以及正负浮点数)就返回true

function isNumber(val){

    var regPos = /^\d+(\.\d+)?$/; //非负浮点数
    var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
    if(regPos.test(val) || regNeg.test(val)){
        return true;
    }else{
        return false;
    }

}

方法三:
校验正负正数就返回true

function isIntNum(val){
    var regPos = / ^\d+$/; // 非负整数
    var regNeg = /^\-[1-9][0-9]*$/; // 负整数
    if(regPos.test(val) || regNeg.test(val)){
        return true;
    }else{
        return false;
    }
}
### JavaScript 中检查变量是否为数字类型 在 JavaScript 中,有多种方法可以用来检测一个值是否属于数字类型。 #### 使用 `typeof` 运算符 最简单的方式就是利用内置的 `typeof` 运算符来判断。如果目标是一个数值,则会返回字符串 `"number"`[^1]: ```javascript console.log(typeof intVar === 'number'); // 输出: true 或 false console.log(typeof floatVar === 'number'); // 输出: true 或 false console.log(typeof stringVar === 'number'); // 输出: false ``` 然而这种方法存在一些局限性,比如对于特殊数值如 NaN 和 Infinity 的处理上可能不符合预期: ```javascript let nanVar = NaN; console.log(typeof nanVar === 'number'); // 输出: true, 虽然这是不直观的结果 let infinityVar = Infinity; console.log(typeof infinityVar === 'number'); // 输出: true ``` #### 使用 `isNaN()` 函数 为了避免上述情况下的误判,还可以借助于全局函数 `isNaN()` 来进一步确认给定值确实代表有效的数字[^5]。不过需要注意的是,传统的 `isNaN()` 对某些非数字类型的参数也会返回 `false`,这可能导致混淆;因此推荐使用 ES6 引入的新版 `Number.isNaN()` 方法来进行更加严格的检验: ```javascript // 不建议的做法 console.log(isNaN('hello')); // 输出: true (错误) // 推荐做法 console.log(Number.isNaN(NaN)); // 输出: true console.log(Number.isNaN(Infinity)); // 输出: false ``` #### 结合两者的优势 为了获得更为精确可靠的判定结果,通常会选择组合以上两种手段——先通过 `typeof` 确认基本数据类别后再辅以 `isNaN()` 或者 `Number.isNaN()` 去排除异常情形: ```javascript function isNumeric(value) { return typeof value === 'number' && !Number.isNaN(value); } console.log(isNumeric(intVar)); // 正确识别常规整型/浮点数 console.log(isNumeric(nanVar)); // 返回 false console.log(isNumeric(infinityVar)); // 返回 true 如果希望也接受无穷大作为合法数字的话 ``` 这样就能有效地覆盖大多数应用场景下对数字类型的验证需求了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值