zoukankan      html  css  js  c++  java
  • 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是有效数字
  • 相关阅读:
    struts2<s:property />标签
    struts2值栈分析
    Java编程 “提高性能” 应尽力做到
    java中Set类接口的用法
    oc-可变数组继承不可变数组
    oc-数组内元素排序
    oc-数组遍历
    oc-创建数组
    oc-字典应用
    oc-数组应用及相关练习
  • 原文地址:https://www.cnblogs.com/xinxinxiangrong7/p/11423553.html
Copyright © 2011-2022 走看看