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是有效数字

转载于:https://www.cnblogs.com/xinxinxiangrong7/p/11423553.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值