javascript 有 5 种基本数据类型:undefined、null、Boolean、String、Number,还有1 种较复杂的数据类型 Object;各种类型之间可以相互转换,其中有些有趣的现象;本文通过这些现象,看看在这些数据转换中,有那些特点。

其中最特别的要数 Number 类型中的 NaN 了,它有两个特点:1、NaN 和任意数值进行算术操作时,返回的只能是 NaN;2、NaN 不等于任何值,包括 NaN 本身。

NaN == NaN;    //false
NaN != NaN;    //true

如果一个值不小于另一个值,那么它一定大于或等于另一个值。但是 NaN 却不是这样……

NaN < 3;    //false
NaN >= 3;    //false

任意数据类型转换为 Number 类型有 3 个方法,Number()、parseInt() 和 parseFloat();其中 parseInt() 和 parseFloat() 类似,只是前者返回整数,后者返回浮点数;Number() 和 parseInt() 转换字符串中就不太一样了。

Number("1234blue");    //NaN
parseInt("1234blue");    

parseInt() 在解析到非数值字符时,停止解析并返回前面解析到的数值。而 Number() 解析到非数值字符时返回 NaN。对于八进制与十进制的转换,它们也有所不同;

// 0 是八进制的前导数,对于十六进制的前导数是 0x
Number("070");
parseInt("070", 8);    //输出56,ECMA5 中对于八进制转换十进制,要显式地定义基数,即第二个参数,8

另外,空字符串的表现也不一样;

Number("");
parseInt("");    //NaN

接下来看操作符操作数据又有什么不同;字符和数值相加,后台会把数值转换为字符串。而字符和数值相减,后台把字符串转换为数值。

"3" + 2;    //"23"
"3" - 2;    

数值与字符串进行比较时,后台会把字符串转换为数值;而字符串与字符串比较,则逐个字符进行比较;注:字符编码大小比较,数字(0-9)< 大写字母(A-Z)< 小写字母(a-z);

"23" < 3;      //false
"23" < "3"      //true

关于操作不同类型的数据,有很多复杂的细节,如 Object、undefined、null、数值、等等之间的比较。以上较常见的数据操作,更多以后或补充。

原创文章,版权所有,转载请注明出处!

(2017.10.16) javascript 数据类型转换与操作的更多相关文章

  1. Util应用程序框架公共操作类(三):数据类型转换公共操作类(扩展篇)

    上一篇以TDD方式介绍了数据类型转换公共操作类的开发,并提供了单元测试和实现代码,本文将演示通过扩展方法来增强公共操作类,以便调用时更加简化. 下面以字符串转换为List<Guid>为例进 ...

  2. Util应用程序框架公共操作类(二):数据类型转换公共操作类(源码篇)

    上一篇介绍了数据类型转换的一些情况,可以看出,如果不进行封装,有可能导致比较混乱的代码.本文通过TDD方式把数据类型转换公共操作类开发出来,并提供源码下载. 我们在 应用程序框架实战十一:创建VS解决 ...

  3. Util应用程序框架公共操作类(一):数据类型转换公共操作类(介绍篇)

    本系列文章将介绍一些对初学者有帮助的辅助类,这些辅助类本身并没有什么稀奇之处,如何能发现需要封装它们可能更加重要,所谓授之以鱼不如授之以渔,掌握封装公共操作类的技巧才是关键,我会详细说明创建这些类的动 ...

  4. JavaScript数据类型转换

    原文转自:http://javascript.ruanyifeng.com/grammar/conversion.html#rd JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予 ...

  5. JavaScript数据类型转换汇总

    ECMAScirpt中的数据类型:undefined.Null.Boolean.Number.String.Object 对一个值使用typeof操作符可能返回下列某个字符串: number(数字). ...

  6. JavaScript 数据类型转换(显式与隐式)

    一.数据类型 JS中有5中简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number.String.还有一种复杂数据类型------Object,Object本质是 ...

  7. 数据类型转换,JS操作HTML

    数据类型转换 1.自动转换(在某种运算环境下) Number环境 String环境 Boolean环境 2.强制类型转换 Number() 字符串:纯数字和空字符转为正常数字,其他NaN 布尔值:tu ...

  8. JavaScript 数据类型转换表

    下表显示了将不同的JavaScript值转换为Number,String和Boolean的结果: 原始值 转换为Number 转换为String 转换为Boolean false 0 "fa ...

  9. 2017.10.16 java中getAttribute和getParameter的区别

    (1)getAttribute:表示得到 域中的对象 返回的是OBJ类型;  getParameter:表示 得到 传递的参数 返回的是String类型; 也就是getAttribute获得的值需要进 ...

随机推荐

  1. Code:Base64 编码/解码

    ylbtech-Code:Base64 编码/解码 1. C#返回顶部 1.编码 byte[] inArray = new byte[msgTxt.Length]; int x; ; x < m ...

  2. 信息安全:Token

    ylbtech-信息安全:Token Token(计算机术语) 在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思. 1.令牌返回顶部 1.令牌 (信息安全术语) Token, 令牌,代 ...

  3. js能否实现截图,截图之后的图片数据再下载到本地?

    https://www.zhihu.com/question/20763177 http://www.cnblogs.com/yanweidie/p/5203943.html

  4. 转:isualvm远程监控Tomcat

    一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. JVM 监控工具 Java VisualVM .jvisua ...

  5. ACM-ICPC2018徐州网络赛 Features Track(二维map+01滚动)

    Features Track 31.32% 1000ms 262144K   Morgana is learning computer vision, and he likes cats, too. ...

  6. WPF语言切换,国际化

    winform语言切换在每个窗口下面有一个.resx结尾的资源文件,在上面添加新字符串就好了: WPF语言切换跟winform不一样的地方在于需要自己添加资源文件,并且这个资源文件可以写一个,也可以写 ...

  7. PJzhang:经典子域名爆破工具subdomainsbrute

    猫宁!!! 参考链接: https://www.waitalone.cn/subdomainsbrute.html https://www.secpulse.com/archives/5900.htm ...

  8. Automake使用说明

    说明 从零开始编写automake工程非常复杂也没有必要,我们只要能看懂开源项目的automake即可,然后根据自己实际情况进行修改即可,下面给出两个比较好的参考项目,其中spice-gtk涵盖了使用 ...

  9. linux和windows下安装python拓展包及requirement.txt安装类库

    python拓展包安装 直接安装拓展包默认路径: Unix(Linux)默认路径:/usr/local/lib/pythonX.Y/site-packagesWindows默认路径:C:\Python ...

  10. Unicode编码下字符串转换

    VC\MFC当中CString.string.char.char*.char数组.int等类型之间的转换令人晕头转向,特地搜集多篇文章资料,利用代码实例等清晰的理清他们之间的关系和如何转换,其实非常简 ...