其它类型转换为字符串
其它类型转换为字符串主要是利用JavaScript的根类Object类提供的“toString”方法,因为其它类都可以看作是从Object类继承而来的,所以都拥有“toString”方法。如下所示;
var num = 5;
alert(num.toString());
字符串转换成数字型
将字符串转换成数字主要是通过“parseInt”与与“parseFloat”两个方法完成的。第一个方法将一字符串转换成整型数字;第二个方法将字符串转换成浮点型数字。对于这两个方法,转换成数字型过程实际上是从字符串第一个字符开始往下搜索,一直搜索到某一个字符不能让该字符串转换成数字为止,并把该字符串前面的串转换成数字。如下所示:
var intstr1=” 123abc ” ; //定义了一个字符串
alert( parseInt(intstr1)) ; //输出“123”
var floatStr2=”123.123abc” ; //定义了一个字符串
alert(parseInt(float2Str2)) ; //输出“123”
alert(parseFloat(floatStr2)) ; //输出“123.123”
可以看到,这两个方法都非常智能,它会尽最大可能尝试理解数字的字面意义,并且转换成正确的数字。但是,如果一个字符串从一开始就根本没有数字,也谈不上转换成数字了,则这两个方法都会返回“NaN”,即非数字的意思。如下所示:
var tempStr=”abc” ; //定义一个字符串
alert(parseInt(tempStr)) ; //输出“NaN”
alert(parseFloat(tempStr)) ; //输出“NaN”
注:如果字符串数字前面有前导“0”,则一定要指定进制去转换,否则可能会得不到想要的结果。
var numStr = "0100";
alert(parseInt(numStr)); //输出
alert(parseInt(numStr,8)); //输出“64”
alert(parseInt(numStr,10)); //以10进制输出100
可以看到,在不同模式下结果会不一样,特别是在没指定进制的情况下,该方法根据字符串格式自动调整转换的进制。
“parseFloat”方法与“parseInt”方法不同,它能处理的字符串必须以十进制形式表示浮点数,而不能以其它进制形式表示,并且它忽略前导的“0”,如下所示:
var numStr1 = "0100"; //定义一个有前导“0”的字符串
alert(parseFloat(numStr1)) //输出“100”
2.4.3 强制类型转换
JavaScript主要有以下3种强制类型转换:
Boolean(value),即把一个“value”转换成Boolean型对象
alert(Boolean("")); //输出“false”,因为是空字符串
alert(Boolean("abc")); //输出“true”,因为是非空字符串
alert(Boolean(10)); //输出“true”,因为是非零值
alert(Boolean(0)); //输出“false”,因为是零值
alert(Boolean(null)); //输出“false”,因为是null值
Number(value),即把一个“value”转换成Number对象,此方法当value中有一个非数字字符,则返回“NaN”;Number(value)方法会根据数字字面值形式,自动决定调用“parseInt”或者“parseFloat”方法。
alert(number(false).toString() ); //输出“0”
alert(number(true).toString() ); //输出“1”
alert(number(false).toString() ); //输出“0”
alert(number(null.).toString() ); //输出“0”
alert(number(“123.123”).toString() ); //输出“123.123”
alert(number(“123”).toString() ); //输出“123”
alert(number(“123.123.123”).toString() ); //输出“NaN”
alert(number(new object() ).toString() ); //输出“NaN”
alert(number(“100”).toString() ); //输出“100”
String(value),即把一个“value”转换成String对象。这个转换其实可以理解为调用了“value”对象的“toString”方法,从而获得该对象的字符串表示。
var objNull=null ; //定义一个“null”对象
alert( objNull.toString() ) ; //会抛出异常“objNull”为空或不是对象
alert( String(objNull)) ; //输出“null”