一、typeof、instanceof、Number.isInteger

  • typeof
    typeof判断值是不是基本类型number
const num = 1;
typeof num === 'number'; // true
  • instanceof
    instanceof判断值是不是包装类Number
const num = new Number(1);
num instanceof Number; // true
  • Number.isInteger
    Number.isInteger判断值是否是整数
Number.isInteger(1);   // true
Number.isInteger('1'); // false
Number.isInteger(1.1); // false

这几种方式的缺点,都是只能基于类型判断,无法判断字符串是否是数值。

二、parseInt、parseFloat

parseIntparseFloat解析的时候遇到非法字符结束,返回解析到的数值。也就是说只要字符串头部合法数值,那么就能解析出数值,哪怕整体不是数值。比如123abc,会被解析程123

const a = '123abc';
parseFloat(a); // 123
const b = 'a123abc';
parseFloat(b); // NaN
const c = '0123abc';
parseFloat(c); // 123
const 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); // 1
Number(false); // 0
Number(null); // 0
Number(undefined); // NaN
Number(''); // 0
Number('123'); // 123
Number(123); // 123
Number('abc'); // NaNisNaN(true); // false
isNaN(false); // false
isNaN(null); // false
isNaN(undefined); // true
isNaN(''); // false
isNaN('123'); // false
isNaN(123); // false
isNaN('abc'); // trueisFinite(true); // true
isFinite(false); // true
isFinite(null); // true
isFinite(undefined); // false
isFinite(''); // true
isFinite('123'); // true
isFinite(123); // true
isFinite('abc'); // false

四、Number.isNaN、Number.isFinite

  • Number.isNaN(value),如果valueNaN返回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'); // falseNumber.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) {return typeof value === "number" && isNaN(value);
}
  • Number.isFinite等价于:
if (Number.isFinite === undefined) Number.isFinite = function(value) {return typeof value === 'number' && isFinite(value);
}

五、正则表达式

const exp = /^[0-9]+.?[0-9]*/;
exp.test('123');   // true
exp.test('a123'); // false
exp.test(123); // true

参考

  • JavaScript 判断是否为数字的几种方式

js判断是否为数字的几种方式相关推荐

  1. JavaScript 判断是否为数字的几种方式

    喜欢博主的文章,欢迎关注.点赞

  2. php 判断只能是数字和字母,PHP_JS只能输入数字或数字和字母等的正则表达式,JS判断只能是数字和小数点 0. - phpStudy...

    JS只能输入数字或数字和字母等的正则表达式 JS判断只能是数字和小数点 0.不能输入中文 1) 2) function chkIt(frm){ if (frm.n1.value.length>0 ...

  3. js判断只能输入数字或小数点

    JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input οnkeyup="this.value=this.value.replace(/\D/g,'' ...

  4. Js判断是否为数字,是否为空,是否为整形,是否为浮点型,是否为对象

    Js判断是否为数字,是否为空,是否为整形,是否为浮点型,是否为对象  /**********************一.验证类*****************************/ //对象是否 ...

  5. js判断是否是数字简单方法

    javascript 判断是否为数字,js 判断数字,javascript 判断数字,js 判断是否是数字 最简单的方法,当然还有其他的方法 例如正则表达式 //isNaN("要判断的变量& ...

  6. js 判断是否是数字类型变量

    js 判断是否是数字类型变量 // js 判断是否是数字类型变量 const isNumber = (val) => typeof val === 'number' && val ...

  7. JS判断只能是数字和小数点

    JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input οnkeyup="this.value=this.value.replace(/\D/g,'' ...

  8. js jquery新窗口打开的几种方式

    js jquery新窗口打开的几种方式 第一种:创建一个form表单,通过表单提交来实现新标签页打开. var form = document.createElement('form'); form. ...

  9. js中唤醒弹框的3种方式

    js中唤醒弹框的3种方式 1.alert() 警告框,只有确定按钮,常用于确保用户可以得到某些信息.需点击确定按钮才能继续操作. alert("ss") 2.confirm() 确 ...

最新文章

  1. git 给每个branch设置权限_自定义git命令阅读开源项目
  2. JspServlet之Cookie
  3. setup2go制作安装程序
  4. mysql 索引 测试_mysql的索引测试
  5. Oracle执行外部文件:
  6. php ajax无刷新翻页,php ajax 无刷新翻页实现代码
  7. python多线程没用_Python 的多线程原来不是真的多线程啊
  8. 算法59----打家劫舍【动态规划】
  9. LVS负载均衡的几种模式和算法
  10. Python_正则(设置pattern变量实例)
  11. 多智能体强化学习(一) IQL、VDN、QMIX、QTRAN算法详解
  12. pyecharts绘制K线
  13. 【人工智能】重磅发布人工智能与机器学习全景式概览
  14. 《计算机网络 自顶向下方法》读书笔记(三)
  15. ubtunu20.04 opencl 安装
  16. p720自带的磁带机备份aix系统
  17. 输入带空格的字符数组
  18. Hive设置连接用户名和密码
  19. visual studio 2019安装教程(详细的很)
  20. iso三体系认证有什么用

热门文章

  1. 【C语言】Linux 下C程序的内存镜像
  2. 计算机组成原理----有关数据通路
  3. Python概述:C++程序员眼中的Python
  4. 大数据技术怎么学习,需要具备什么基础?简单说一下
  5. 使用LCN框架解决分布式事物
  6. android把音乐存到sd卡上,将离线音乐移动到Spotify for Android到SD卡 | MOS86
  7. unity3D 点击按钮 播放音频
  8. ZCU104开发板MIPI摄像头开发(详细介绍移植ZCU102example design)
  9. 散转程序c语言,单片机 散转表程序的使用
  10. SEO原创文章的重要性