几种检验数字的方法区别 isNaN、isFinite

来源:互联网 发布:淘宝开店零食起名字 编辑:程序博客网 时间:2024/06/05 09:51

  1. isNaN():

首先认识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);}





0 0
原创粉丝点击