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. POJ1986(LCA应用:求两结点之间距离)

    Distance Queries Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 11304   Accepted: 3985 ...

  2. AI-Info-Micron-Insight:将您的游戏技能变成一份工作

    ylbtech-AI-Info-Micron-Insight:将您的游戏技能变成一份工作 1.返回顶部 1. 将您的游戏技能变成一份工作 听起来不现实? 一位来自著名商学院的教授不这么认为.他认为,金 ...

  3. 03_通过OpenHelper获取SqliteDatabase对象

    MyOpenHelper openHelper = new MyOpenHelper(this); 类似于java的File file = new File();只是声明这个东西,但是文件还并没有真正 ...

  4. [hdu2586]How far away?(LCA)

    题意:问树上两点之间的最短距离 解题关键:LCA模板题,在线做法,LCA->RMQ,用st表求解 这里是用first,rmq数组长度可以减半. #include<cstdio> #i ...

  5. Pseudo Random Nubmer Sampling

    Pseudo Random Nubmer Sampling https://en.wikipedia.org/wiki/Inverse\_transform\_sampling given a dis ...

  6. Coding-Job:从研发到生产的容器化融合实践

    大家好,我是来自 CODING 的全栈开发工程师,我有幸在 CODING 参与了 Coding-Job 这个容器化的编排平台的研发.大家对 CODING 可能比较了解, Coding.net 是一个一 ...

  7. windows和Dos常见命令总结

    linux最常见命令 (1) pwd命令pwd (即print working directory,打印工作路径) 命令的功能是显示当前的工作路径.如现在是在“/home/CAI”目录下,则可以用此命 ...

  8. ue4 碰撞检测测试

    记录几条物理相关 测试条件,1使用setActorLocation移动,3使用控制器的移动 1 moveCube  2 targetCube  3 Character 两个Cube的碰撞事件 1和2的 ...

  9. 在Visual Studio中编译Linux的一些问题

    相对路径: 在windows下,和当前文件同一个目录下的引用会这么写: #include "SubDirectory\header.h" 或者 #include "Sub ...

  10. 分层确定性钱包开发的代码实现(HD钱包服务)

    HD Wallets的全称是Hierachical Deterministic Wallets, 对应中文是 分层确定性钱包. 这种钱包能够使用一组助记词来管理所有的账户的所有币种,在比特币的BIP3 ...