11.数据类型之间的转换
由之前的例子我们可以看出,当我们直接把数值和字符串加在一起的时候,JavaScript会直接把数值转换成字符串输出。一般来说,在JavaScript中这种数据类型自动转换是不会出错的,但是也有的时候我们需要进行一些特定的转换,比如我们用表单接收数据的时候,我们得到的数据都是以字符串形式出现的,如果我们需要整数或者小数神马的,就需要转换数据类型了。
例如,如果你用表单收集了"22"和"15"两个字符串,你想把他们加和,如果直接"22"+"15"就成了"2215"了,因为表单收到的默认就是string类型。这里我们可以通过两个函数parseInt()和parseFloat()来将字符串转换成数值。
示例代码(ch2_example7.html):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>ch2_example7</title> </head> <body> <script type="text/javascript" language="JavaScript"> var myString = "56.02 degrees centigrade"; var myInt; var myFloat; document.write("\"" + myString +"\" is " +parseInt(myString) + "as an integer" + "<br>"); myInt = parseInt(myString); document.write("\"" + myString + "\" when converted to an integer equals " + myInt + "<br/>"); myFloat = parseFloat(myString); document.write("\"" + myString + "\" when converted to a floating point number equals " + myFloat); </script> </body> </html>
定义了一个叫myString的字符串,这是一个含有数值的字符串。
document.write("\"" + myString +"\" is " +parseInt(myString) + " as an integer" + "<br>");
这里用了转义符号\来输出双引号。用parseInt(myString)来转换字符中的数值,将数值转换成Int型。它的输出是:
之后
myInt = parseInt(myString);
document.write("\"" + myString + "\" when converted to an integer equals " + myInt + "<br/>");
将转换出来的Int型数值输出:
如果转换成小数呢
myFloat = parseFloat(myString);
document.write("\"" + myString + "\" when converted to a floating point number equals " + myFloat);
它的输出是这样的:
由此看来,parseXX()函数,是一个可以自动从字符串中找出数值信息,转换成数值变量的一类函数。
12.处理不能转换的字符串
在上面的实例中,如果我们把myString改成"I’m not a number",也就是说,在字符串中不出现任何数字,那么它的输出就变成了这个样子:
可以很清楚的看到,原来是数字的部分,现在变成了 "NaN" 。那么,NaN是啥?
NaN 就是 Not a Number.
如果被转换的字符串里面没有数值,那么,它就是NaN。这是JavaScript当中的一个特殊值。它拥有自己的函数 isNaN() , 它是用来检测某个值是否为NaN。
myVar1 = isNaN("Hello");
myVar1中存储的就是布尔型的True,因为"Hello"不是数值。然而:
myVar2 = isNaN("34");
myVar2中存储的就是布尔型的False,因为"34"可以成功的被转换为数值型的34。
如果我们在转换时使用了不可转换的字符串,那么原本应该出现数字的位置就会显示NaN。所以为了避免此类问题,在转换之前我们需要用isNaN()函数来检测数据。