ECMAScript---数字类型详解

number数字类详解

整数、小数、负数、NaN都是number数字类型的

NaN:not a number ,但是它是数字类型的

isNaN:检测当前值是否 不是有效数字,返回true代表不是有效数字,返回false是有效数字

// 语法 isNaN ([value]) ;
var num = 12;
isNaN (num); // false 检测num变量存储的值是否为非有效数字

var str = '大神'; 
isNaN (str); //true 非有效数字

isNaN (true); //false 有效数字
isNaN (false); //false 有效数字
isNaN (null); //false  有效数字
isNaN (undefined); //true
isNaN ({name:'lei'}); //true
isNaN ([20、30]); //true
isNaN ([20]) ; //false   有效数字
isNaN (/^$/) ; //true
isNaN (function (){}); //true

isNaN检测的机制:

1、首先验证当前要检测的值是否为数字类型的,如果不是,浏览器会默认把值转换为数字类型的

2、当前检测的值已经是数字类型的,是有效数字返回false,不是返回true(数字类型中只有NaN不是有效数字,其余都是有效数字)

把非数字类型的值转换为数字:

1、基本数据类型转换为数字:直接使用Number这个方法转换的

/字符串转数字**/
Number ('13'); //13
Number ('13.5'); //13.5

Number ('13.5.5'); //NaN  如果当前字符串中出现任意一个非有效数字字符,结果为NaN
Number ('13px'); //NaN 

/*布尔转数字*/
Number (true); //1
Number (false); //0

/*其他*/
Number (null) ;//0
Number (undefined); //NaN

 2、引用数据类型转换为数字:先把引用值调用toString转换为字符串,然后再把字符串调取Number转换为数字

({}).toString() ; // '[object Object]' 
Number ('[object Object]') ;//NaN

([20,30]).toString() ; // '20,30'
Number ( '20,30'); // NaN
([20]).toString();//'20'
Number('20');//20
isNaN(20);//false
/*特殊情况*/
([]).toString () ;// ' '
Number('');// 0
isNaN([]); //false ,因为 [] 先toString 为 空字符串,空字符串再转数字为0,0是有效数字

parseInt  / parseFloat  等同于Number ,也是把其他类型转换为数字类型

和Number区别在于字符串转换分析上

Number:出现任意非有效数字字符,结果为NaN

paeseInt:把一个字符串中的整数部分解析出来

paseFloat:把一个字符串中的小数(浮点数)部分解析出来

parseInt('13.5px'); //13
parseFloat('13.5px');//13.5
parseInt('w:13.5px');//NaN  一旦遇到非有效数字字符,结束查找

NaN的比较

NaN和谁都不相等,包括它自己

NaN == NaN ;// false   

思考题:有一个变量num,存储的值不知道,想检测它是否是一个有效数字,下面方案是否可以?

if(Number (num )== NaN){

  alert('num不是有效数字');
}

if(isNaN(num)){
alert('num不是有效数字');
}
答案肯定是第二种了,因为NaN不等于NaN,条件不可能成了
也只有isNaN是能检测当前值是否为有效数字了,true非有效数字,false是有效数字
posted @ 2019-08-28 14:30  欣欣向荣998  阅读(256)  评论(0编辑  收藏  举报