最近还是在看《JavaScript高级程序设计》,看了接近一半了,打算停下来检查一下自己看书的成果。昨天饶有兴致去做了一套2014阿里巴巴校园招聘前端在线笔试题,完整的一套居然有37题,真是累出*。在看了好几个人的答案之后,觉得在JavaScript中数据类型的转换是一个既重要,又容易犯迷糊的知识点,打算自己写上一篇博客,以便自己日后查阅。
在写下这篇博客之前,习惯性的百度了一下别人怎么讲述我自己将要讲述的东西,发现大家的重点是罗列所有方法。我打算和大伙不一样的是,主要想谈一谈我自己以前不太明白的。
JavaScript的数据类型转换主要有三类:
- 原始值转换成原始值
- 原始值转换成对象
- 对象转换成原始值
上面所讲到的原始值是指string、int 和 boolean这些基本类型的值。在这三种转换当中,根据转换方式又可以划分成显示转换和隐式转换。其中显示转换又可以叫做强制转化,也就是调用强制Number、String和Boolean三个构造函数,手动将各种类型的值,转换成数字、字符串或者布尔值。下面简单介绍一下这三种方法的用法。
1.转型函数Number():
- 如果是布尔值,得到的结果是1(true)和0(false)
- 如果是数字,只是简单的传入传出
- 如果是null,返回0
- 如果是undefined,返回NaN
- 如果是字符串,包含几种情况:
- 如果是空的字符串,返回0
- 如果只包含数字,会转换成十进制数字
- 如果字符串是有效的浮点数格式,转换成对应的浮点数
- 如果是有效的十六进制格式,转换成对应的十进制数字
- 如果不是以上格式,返回NaN
1 var bool = true; //布尔值true,返回1 2 var num = 12345; //单纯的数字,返回12345 3 var nullVal = null; //返回0 4 var test = undefined; //返回NaN 5 var emptyString = " "; //返回0 6 var numString = "12345";//返回12345 7 var floatString = "1.2345"; //返回1.2345 8 var num2 = "0xf"; //返回15 9 var test2 = "hello"; //返回NaN
2.转型函数String():如果值有toSting()方法,首先调用该方法,如果没有该方法,则按照一下规则调用
- 如果是数值,得到相应的字符串
- 如果是null,返回字符串“null”
- 如果是undefined,返回“undefined”
- 如果是布尔值,则转换成“true”(true)和“false”(false)
var value1 = 12345; //返回"12345" var value2 = null; //返回 "null" var value3 = undefined; //返回 "undefined" var value4 = true; //返回true
3.转型函数Boolean():使用Boolean函数,可以将任意类型的变量转为布尔值
- 除了undefined,null,0,-0,NaN,“ ”返回值为false,其他全部是true
1 var value1 = undefined; //false 2 var value2 = null; //false 3 var value3 = 0; //false 4 var value4 = -0; //false 5 var value5 = NaN; //false 6 var value6 = " "; //false 7 var value7 = { 8 name : "Jerry" 9 }; //true