(2017.10.16) javascript 数据类型转换与操作
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 数据类型转换与操作的更多相关文章
- Util应用程序框架公共操作类(三):数据类型转换公共操作类(扩展篇)
上一篇以TDD方式介绍了数据类型转换公共操作类的开发,并提供了单元测试和实现代码,本文将演示通过扩展方法来增强公共操作类,以便调用时更加简化. 下面以字符串转换为List<Guid>为例进 ...
- Util应用程序框架公共操作类(二):数据类型转换公共操作类(源码篇)
上一篇介绍了数据类型转换的一些情况,可以看出,如果不进行封装,有可能导致比较混乱的代码.本文通过TDD方式把数据类型转换公共操作类开发出来,并提供源码下载. 我们在 应用程序框架实战十一:创建VS解决 ...
- Util应用程序框架公共操作类(一):数据类型转换公共操作类(介绍篇)
本系列文章将介绍一些对初学者有帮助的辅助类,这些辅助类本身并没有什么稀奇之处,如何能发现需要封装它们可能更加重要,所谓授之以鱼不如授之以渔,掌握封装公共操作类的技巧才是关键,我会详细说明创建这些类的动 ...
- JavaScript数据类型转换
原文转自:http://javascript.ruanyifeng.com/grammar/conversion.html#rd JavaScript是一种动态类型语言,变量是没有类型的,可以随时赋予 ...
- JavaScript数据类型转换汇总
ECMAScirpt中的数据类型:undefined.Null.Boolean.Number.String.Object 对一个值使用typeof操作符可能返回下列某个字符串: number(数字). ...
- JavaScript 数据类型转换(显式与隐式)
一.数据类型 JS中有5中简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number.String.还有一种复杂数据类型------Object,Object本质是 ...
- 数据类型转换,JS操作HTML
数据类型转换 1.自动转换(在某种运算环境下) Number环境 String环境 Boolean环境 2.强制类型转换 Number() 字符串:纯数字和空字符转为正常数字,其他NaN 布尔值:tu ...
- JavaScript 数据类型转换表
下表显示了将不同的JavaScript值转换为Number,String和Boolean的结果: 原始值 转换为Number 转换为String 转换为Boolean false 0 "fa ...
- 2017.10.16 java中getAttribute和getParameter的区别
(1)getAttribute:表示得到 域中的对象 返回的是OBJ类型; getParameter:表示 得到 传递的参数 返回的是String类型; 也就是getAttribute获得的值需要进 ...
随机推荐
- poj3666序列对应——DP
题目:http://poj.org/problem?id=3666 很普通的DP,离散化(sort)一下即可: mn的求法很不错(比我原来开了mn[]……简洁). 代码如下: #include< ...
- 常量指针-指向常量的指针,指针常量-指针本身是常量,常量-不能更改值的常量,数组指针-是指针int (*p)[n] 指针数组-是数组int *p[n]
1.常量指针 定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针. 声明:const int * p; int const * p; 注:可以将一个常 ...
- C++源码学习
C/C++是最主要的编程语言.这里列出了50名优秀网站和网页清单,这些网站提供c/c++源代码.这份清单提供了源代码的链接以及它们的小说明.我已尽力包括最佳的C/C++源代码的网站.这不是一个完整的清 ...
- SendMail发送回执及读取收件箱
一.SendMail发送有回执提示 1.邮件发送配置 Properties props = new Properties(); String smtp = "smtp.qq.com" ...
- POJ-3280
Cheapest Palindrome Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10301 Accepted: 4 ...
- php array数组(第一部分)
创建一个数组 <?php $arr = array("My","name","is","zhangsan"); e ...
- linux下 卸载vmtools
注意事项: 1) 安装linux时,一定要安装gcc和kernel-source: 2)光驱使用完毕可使用 umount /mnt/cdrom 卸载掉 3)VMtools 默认安装在 /usr/bin ...
- ZOJ2898【折半搜索】
题意: 给出一系列值和对应的陷阱,对于陷阱如果存在两个就抵消,求价值最大. 思路: 折半枚举,利用异或 #include <bits/stdc++.h> using namespace s ...
- 洛谷P2217 [HAOI2007]分割矩阵
P2217 [HAOI2007]分割矩阵 题目描述 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n ...
- iOS 根据文字字数动态确定Label宽高
iOS7中用以下方法 - (CGSize)sizeWithAttributes:(NSDictionary *)attrs; 替代过时的iOS6中的- (CGSize)sizeWithFont:(UI ...