一、转换成字符串
1、伪对象:
ECMAScript定义所有的对象都有toString()方法,无论是真对象,还是伪对象。
ECMAScript中的Boolean值、数字和字符串都是伪对象,这意味着它们具有属性和方法。这三种伪对象都有toString()方法,可以把它们的值转换成字符串。
2、Boolean类型的toString()方法只能输出字符串"true"或"false"。
var bIsTrue = flase;alert(bIsTrue.toString()); // 输出字符串"false"
3、Number类型的toString()方法有两种模式
3.1 默认模式
整型数值会被解析为对应的字符串
var iNum = 10; alert(iNum.toString()); // 输出十进制字符串"10"
小数点后全为0的浮点数会被解析为整型字符串
var fNum = 10.00; alert(fNum.toString()); // 输出十进制字符串"10"
小数点后非零的浮点数会被解析为对应的字符串
var fNum = 10.01; alert(fNum.toString()); // 输出十进制浮点格式字符串"10.01"
八进制、十六进制整数会被解析为对应的十进制字符串
var iNum = 012;alert(iNum.toString()); // 输出十进制字符串"10"iNum = 0xAA;alert(iNum.toString()); // 输出十进制字符串"170"
注:二进制整数不能使用toString()方法,因为二进制数有前导0时,会被认为是八进制数;无前导0时,会被认为是十进制数
3.2 基模式
可以用不同的基数(进制)输出字符串,基数是toString()方法的参数。
二进制的基数是2,八进制的基数是8,16进制的基数是16,默认的基数是10。
var iNum = 10;alert(iNum.toString(2)); // 输出二进制字符串"1010"alert(iNum.toString(8)); // 输出八进制字符串"12"alert(iNum.toString(16)) // 输出十六进制字符串"a"
注:十进制的基数是10,对数字调用toString(10)与toString()相同。
4、String类型的toString()方法
var sStr = "hello";alert(sStr.toString()); // 输出字符串"hello"
注:String类型直接使用即可,不必调用toString()方法。
二、转换成数字
ECMAScript规定只能将Number类型与String类型转换成数字(整型和浮点型),其他类型试图转换的结果都会为NaN(Not a Number)。
var bIsTrue = true;alert(parseInt(bIsTrue)); // 输出NaN
1、parseInt() 方法:
1.1 默认模式
parseInt()方法会从字符串的0位置处开始检查字符,如果0位置处不是数字,该方法将返回NaN;否则依次向后检查字符,直到遇到非数字字符,然后将该字符之前的字符串转换成数字返回。
var sStr = "12345Hello world";alert(parseInt(sStr)); // 输出数字:12345 sStr = "hello world"; alert(parseInt(sStr)); // 输出:NaN
注:parseInt()方法因为只将参数转换为整数,所以参数中的小数点也被认为是非数字字符。
var iNum = 5.9;alert(parseInt(iNum)); // 输出整数:5var sStr = "5.9Hello";alert(parseInt(sStr)); // 输出整数:5
当parseInt()方法的参数为八进制数字;十六进制字符串或数字时,会返回十进制结果:
var sStr = "0xAHello";alert(parseInt(sStr)); // 输出十进制整数:10var iNum = 012;alert(parseInt(iNum)); // 输出十进制整数: 10
注:parseInt()方法在默认模式下,当参数为八进制字符串时,在Chrome、IE、FireFox中的执行结果不同;当参数为八进制整数时,执行结果相同。
/* IE9 Chrome 23中输出十进制整数:10 FireFox中输出十进制整数:8*/var sStr = "010";alert(parseInt(sStr));/* IE9、Chrome 23、 FireFox中都输出十进制整数:10 */var iNum = 010;alert(parseInt(iNum));/* 建议的写法是为parseInt()方法指定基数,三种浏览器中都统一输出十进制数:8*/var sStr = "010";alert(parseInt(sStr, 8));
1.2 基模式(推荐使用)
parseInt()方法的基模式,可以把二进制、八进制、十六进制甚至其他任何进制的字符串及数字转换成十进制整数。
parseInt()方法的第一个参数是待转换的字符串或数字;第二个参数是基数。
var iNum = 0xA;alert(parseInt(iNum, 16)); // 将十六进制整数输出为十进制整数:10var sStr = "0xAHello";alert(parseInt(sStr, 16)); // 将包含十六进制数的字符串输出为十进制整数:10
注:建议parseInt()方法中显式使用基数。
2、parseFloat()方法:
parseFloat()方法与parseInt()方法的处理方式相似,但是parseFloat()方法没有基模式。
2.1 当在位置0处检索到无效字符时,将返回NaN。
2.2 当从位置0处依次检索到有效数字,且在这些数字后遇到的第一个小数点是有效字符,再往后依次检索到无效字符(包含第二个小数点),将返回该无效字符之前的浮点数。
2.3 检索到的浮点数,若小数点后无有效数字或全为0,则返回整数。
2.4 类似".01A.BC"这样的字符串将被返回0.01,即返回时会自动加前导0。
2.5 返回的浮点数,小数点后的前导0多于5个时,会以科学计数法的方式返回结果。
2.6 parseFloat()方法不支持八进制与十六进制的字符串,但是支持八进制与十六进制的整数。
var fNum1 = parseFloat(12.00); // 返回:12var fNum2 = parseFloat("12.00") // 返回:12var fNum3 = parseFloat(.01); // 返回:0.01var fNum4 = parseFloat(.01Hello); // 返回:0.01var fNum5 = parseFloat("hello"); // 返回:NaNvar fNum6 = parseFloat("12.10"); // 返回:12.1var fNum7 = parseFloat("12.12"); // 返回:12.12var fNum8 = parseFloat("0xA"); // 返回:0var fNum9 = parseFloat("010"); // 返回:10
三、强制类型转换
强制类型转换会在内存中新开辟一块空间,用于存放由原始值直接转换成的值。
ECMAScript支持以下三种强制类型转换:
1、Boolean(value) --- 将value值的拷贝强制转换成Boolean类型。
2、Number(value) --- 将value值的拷贝强制转换成Number类型。
3、String(value) --- 将value值的拷贝强制转换成String类型。