几种检验数字的方法区别 isNaN、isFinite
2015-12-08 12:38
1036 查看
首先认识NaN , NaN是IEEE 754定义的一个特殊数值。它不表示一个数字。尽管下面的表达式返回的是true
typeof NaN ==='number' ;//返回true
NaN产生的情况有两种:
1、在对非数字进行数字转换的时候。比如:parseInt('runningSnail'); 返回NaN
2、在做数学元算的时候,有参与计算的元素为NaN或者计算结果是非数字,那么结果都会为NaN
而判断是否为NaN ,不能简单的使用==或者===。因为这样返回的都是false。例如:
<span style="font-size:14px;">var a = parseInt("runningSnail");
alert(a==NaN); //false
alert(a===NaN); //false</span>为了方便检测数字还是NaN,javaScript提供了一个方法,isNaN用于检测是数字还是NaN.
isNaN(NaN) //true
isNaN(1) //false
isNaN("a") //true
isNaN("0") //false 这里注意,isNaN首选会对参数做一次数字的转换,能转换成数字的则返回false,反之则为true。
2、isFinite():
首先让我们先认识下Infinity。Infinity在javaScript表示数字的无穷大,而-Infinity则表示数字的负无穷大。而判断是否可用做数字的最佳方法则是isFinite(),因为该方法会筛除掉NaN和Infinity两个关键字。但是该方法和isNaN一样会首先将传入的参数做数字的转换,若参数能够转换成可用范围内的数字则返回true,否则就返回false。例如:
alert(isFinite("a")); // false
alert(isFinite("1")); //true
alert(isFinite(1)); //true
alert(isFinite(Infinity)); //false
alert(isFinite(NaN)); //false
3、自定义方法检测数字:
在介绍isNaN和isFinite方法时,我们知道这两个方法会将参数做一次数字转换。但是在一些情况下我们不希望对其转换,而是希望直接判断是否为数字。那么这时,就要使用自定义的isNumber方法来进行检测:var isNumber = function isNumber(v){ return typeof v ==='number'&& isFinite(v); }
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享
- 如何创建对象以及jQuery中创建对象的方式
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式