number数字类详解

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

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

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

  1. // 语法 isNaN ([value]) ;
  2. var num = 12;
  3. isNaN (num); // false 检测num变量存储的值是否为非有效数字
  4.  
  5. var str = '大神';
  6. isNaN (str); //true 非有效数字
  7.  
  8. isNaN (true); //false 有效数字
  9. isNaN (false); //false 有效数字
  10. isNaN (null); //false 有效数字
  11. isNaN (undefined); //true
  12. isNaN ({name:'lei'}); //true
  13. isNaN ([2030]); //true
  14. isNaN ([20]) ; //false 有效数字
  15. isNaN (/^$/) ; //true
  16. isNaN (function (){}); //true

isNaN检测的机制:

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

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

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

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

  1. /字符串转数字**/
  2. Number ('13'); //
  3. Number ('13.5'); //13.5
  4.  
  5. Number ('13.5.5'); //NaN 如果当前字符串中出现任意一个非有效数字字符,结果为NaN
  6. Number ('13px'); //NaN
  7.  
  8. /*布尔转数字*/
  9. Number (true); //
  10. Number (false); //
  11.  
  12. /*其他*/
  13. Number (null) ;//
  14. Number (undefined); //NaN

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

  1. ({}).toString() ; // '[object Object]'
  2. Number ('[object Object]') ;//NaN
  3.  
  4. ([20,30]).toString() ; // '20,30'
  5. Number ( '20,30'); // NaN
  1. ([20]).toString();//'20'
    Number('20');//20
    isNaN(20);//false
  1. /*特殊情况*/
  2. ([]).toString () ;// ' '
  3. Number('');//
  4. isNaN([]); //false ,因为 [] 先toString 为 空字符串,空字符串再转数字为0,0是有效数字

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

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

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

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

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

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

NaN的比较

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

  1. NaN == NaN ;// false

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

  1. if(Number num )== NaN){
  2.  
  3. alert('num不是有效数字');
  4. }
  5.  
  6. if(isNaN(num)){
  1. alert('num不是有效数字');
  1. }
  1. 答案肯定是第二种了,因为NaN不等于NaN,条件不可能成了
    也只有isNaN是能检测当前值是否为有效数字了,true非有效数字,false是有效数字

ECMAScript---数字类型详解的更多相关文章

  1. JSON取值(key是中文或者数字)方式详解

    JSON取值(key是中文或者数字)方式详解 先准备一个json对象用于演示 var json = {'name':'zhangsan', '年龄':23, 404:'你可能迷路了'}; 使用JS中w ...

  2. (转)MySQL字段类型详解

    MySQL字段类型详解 原文:http://www.cnblogs.com/100thMountain/p/4692842.html MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间 ...

  3. MySQL中tinytext、text、mediumtext和longtext等各个类型详解

    转: MySQL中tinytext.text.mediumtext和longtext等各个类型详解 2018年06月13日 08:55:24 youcijibi 阅读数 26900更多 个人分类: 每 ...

  4. C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解  ...

  5. C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)

    前面三篇文章<C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)>.<C++11 并发指南六( <atomic> 类型详解二 std::at ...

  6. C++11 并发指南六(atomic 类型详解三 std::atomic (续))

    C++11 并发指南六( <atomic> 类型详解二 std::atomic ) 介绍了基本的原子类型 std::atomic 的用法,本节我会给大家介绍C++11 标准库中的 std: ...

  7. C++11 并发指南六( <atomic> 类型详解二 std::atomic )

    C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)  一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...

  8. dede的pagelist标签的listsize数字属性详解(借鉴)

    dede的pagelist标签的listsize数字属性详解.见远seo经常用织梦搭建各种网站,有次发现列表页面的分页显示超过div的界限,也就是溢出了或者说是撑破了.后来经过研究发现是pagelis ...

  9. 服务启动项 Start类型详解

    注册表的服务启动项 Start类型详解 HKLM\SYSTEM\CurrentControlSet\services\ 下的服务项.不论有没有在services.msc服务管理控制台中显示,在注册表中 ...

随机推荐

  1. c实现生产者消费者问题。 windows下。

    #include <stdio.h>#include <windows.h> #define P(S) WaitForSingleObject(S,INFINITE)//定义W ...

  2. Java NIO DirectByteBuffer 的使用与研究

    一.结论 DirectByteBuffer 与 ByteBuffer 最大区别就在于缓冲区内存管理的方式.ByteBuffer使用的是堆内存,DirectByteBuffer 使用的是堆外内存,堆外内 ...

  3. solr配置分词器

    一.solr4.10 + mmseg4j-2.2.0分词器 1.solr的安装部署:http://www.cnblogs.com/honger/p/5876289.html,注意不同的版本安装方式可能 ...

  4. GitLab与Git的结合

    作为一名刚入职的大数据初级开发工程师,来到公司后发现代码是部署在GItLab上,之前一直认为代码可以放在码云.github上面,然后就很迷惑就对GitLab进行了了解,将git 和gitlab结合起来 ...

  5. Hadoop自学系列集(四) ---- Hadoop集群

    久等了,近期公司比较忙,学习的时间都没有啊,到今日才有时间呢!!!好了,下面就跟着笔者开始配置Hadoop集群吧. hosts文件和SSH免密码登录配置好了之后,现在进入Hadoop安装目录,修改一些 ...

  6. JS面向对象编程(三):非构造函数的继承

    一.什么是"非构造函数"的继承?            现在有一个对象,叫"中国人".            var Chinese = {           ...

  7. 【MySQL】日常小技巧汇总,更新中……

    创建表时修改自增主键,添加 AUTO_INCREMENT=<Number> ,例如: CREATE TABLE `table_name` ( `id` int(11) unsigned N ...

  8. 【Intellij】导入 jar 包

    选中工具栏上"File"--->"Project Structure"--->选择“Libraries”--->点击“+”--->选择自 ...

  9. 【iOS】file not found: .../Build/Products/Debug-iphonesimulator file not found

    今天又遇到了这个问题: ld: file not found: /Users/***/Library/Developer/Xcode/DerivedData/***-dfscappaygvbougtb ...

  10. Java8中的流操作-基本使用&性能测试

    为获得更好的阅读体验,请访问原文:传送门 一.流(Stream)简介 流是 Java8 中 API 的新成员,它允许你以声明式的方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).这有点儿 ...