首先认识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。
var isNumber = function isNumber(v){ return typeof v ==='number'&& isFinite(v); }