• JavaScript判断一个变量是否为数字


    JavaScript是一门动态类型的语言,解释器在运行的时候才确定变量的类型。

    在JavaScript中NaNInfinity-Infinity都是数字类型的。

    根据这些要求,最好使用的函数是内置Number对象中的isFinite()函数或正则表达式。但是,大多人平常会使用其他函数,如Number.isNaN()typeof()函数。

    #创建一些变量,下面我们分别用Number.isFinite()、Number.isNaN()、typeof()、正则去验证;
    let intVar = 2; let floVar = 2.1; let strVar = "2.1"; let nanVar = NaN; let infinityVar = Infinity; let nullVar = null; let undefinedVar = undefined;
    let str = "";

    使用Number.isFinite()函数名。

    Number.isFinite()函数检查变量是否为数字,还检查其是否为有限值。 因此,对于NaNInfinity-Infinity的数字,它返回false

    用上面定义的变量检验一下

    > Number.isFinite(intVar);
    true
    > Number.isFinite(floVar);
    true
    > Number.isFinite(strVar);
    false
    > Number.isFinite(nanVar);
    false
    > Number.isFinite(infinityVar);
    false
    > Number.isFinite(nullVar);
    false
    > Number.isFinite(undefined);
    false
    > Number.isFinite(str);
    false

    使用Number.isNaN()方法。

    > !Number.isNaN(intVar);
    true
    > !Number.isNaN(floatVar);
    true
    > !Number.isNaN(stringVar);
    true # Wrong
    > !Number.isNaN(nanVar);
    false
    > !Number.isNaN(infinityVar);
    true # Wrong
    > !Number.isNaN(nullVar);
    true # Wrong
    > !Number.isNaN(undefinedVar);
    true # Wrong
    > !Number.isNaN(str);
    true # Wrong

    使用typeof()

    > typeof(intVar) == 'number';
    true
    > typeof(floatVar) == 'number';
    true
    > typeof(stringVar) == 'number';
    false
    > typeof(nanVar) == 'number';
    true # Wrong
    > typeof(infinityVar) == 'number';
    true # Wrong
    > typeof(nullVar) == 'number';
    false
    > typeof(undefined) == 'number';
    false
    > typeof(str) == 'number';
    false
     

    使用正则表达式

    let reg = /^(-)?[0-9]+.?[0-9]*$/;

    reg.test(intVar);
    true
    reg.test(floVar);
    true
    reg.test(strVar);
    true
    reg.test(nanVar);
    false
    reg.test(nullVar);
    false
    reg.test(undefinedVar);
    false
    reg.test(str)
    false

    总结

    在本文中,我们学习了如何检查JavaScript中的变量是否为数字。 Number.isNaN()函数仅在我们知道变量为数字并且需要验证它是否为NaN`时才适用。

    如果代码中有NaNInfinity-Infinity以及其他数字,则 typeof()`函数适用。

    Number.isFinite()方法捕获所有有限数,是最适合我们的要求。

    正则在不区分数字或字符串时表现也不错

  • 相关阅读:
    oracle 时间加减法 与C#
    BCB编写DLL
    面试题:产生一个长度为100的数组,为数组中的每一项随机填充1100之间的数并且保证不重复 (C#实现)
    公司内部员工运算测试题
    MVP 模式是否应该这样修改?
    MVP 模式是否应该这样修改2?
    面试题:一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少, 用递归算法实现(C#)
    使用游标进行跨数据库循环更新
    Hive 安装配置流程
    Scala的基本语法:集合应用
  • 原文地址:https://www.cnblogs.com/fuzhengyi/p/13864153.html
Copyright © 2020-2023  润新知