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. Python操作MySQL数据库9个实用实例

    用python连接mysql的时候,需要用的安装版本,源码版本容易有错误提示.下边是打包了32与64版本. MySQL-python-1.2.3.win32-py2.7.exe MySQL-pytho ...

  2. javascript中原型链存在的问题

    我们知道使用原型链实现继承是一个goodway:)看个原型链继承的例子. function A () { this.abc = 44; } A.prototype.getAbc = function ...

  3. ubuntu下mysql的安装与配置

    1.安装,安装的过程中会提示你设置 MySql的"root"密码 sudo apt-get install mysql-server mysql-client 2.把  /etc/ ...

  4. tomcat 开机自启方法

    1.把下面的代码保存为tomcat文件,并让它成为可执行文件 chmod 755 tomcat. #!/bin/bash # # /etc/rc.d/init.d/tomcat # init scri ...

  5. linux工具————fish shell

    1.说明 fish is a fully-equipped command line shell (like bash or zsh) that is smart and user-friendly. ...

  6. 【hdu2955】 Robberies 01背包

    标签:01背包 hdu2955 http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意:盗贼抢银行,给出n个银行,每个银行有一定的资金和抢劫后被抓的概率,在 ...

  7. 如何让div中的span垂直居中 ----height:100%设置div的高度

    如果div中只有一个span一个元素,可以使用line-height.如果div中还有其他元素,可以设置span的css如下: .span{ position: absolute; top: 50%; ...

  8. php curl采集,服务器gzip压缩返回数据怎么办

    一般服务器不会胡乱返回gzip压缩的数据,一般是客户端请求的头部里包含你浏览器能接受的压缩方式, Accept-Encoding:gzip,deflate,sdch   这里是gzip .deflat ...

  9. Spark HA 配置中spark.deploy.zookeeper.url 的意思

    Spark HA的配置网上很多,最近我在看王林的Spark的视频,要付费的.那个人牛B吹得很大,本事应该是有的,但是有本事,不一定就是好老师.一开始吹中国第一,吹着吹着就变成世界第一.就算你真的是世界 ...

  10. Git 深度学习填坑之旅一(git安装和配置、基本命令)

    前戏 最近不管是工作还是ctf比赛,接触与使用git变得越来越多,git半吊子水平的我已经不能支撑日常工作了.碰巧自己公司项目刚上线,现在能挤出一点时间来挖一下这个坑... 为什么使用Git 1.后悔 ...