JS支持自动类型转换,其功能非常强大,首先看一段代码:
<script type="text/javascript">
// 定义字符串变量
var a = "3.145";
// 让字符串变量和数值执行算术运算
var b = a - 2;
// 让字符串变量和数值执行运算,到底是算术运算,还是字符串运算呢?
var c = a + 2;
// 输出b和c的值
alert (b + "\n" + c);
</script>
结果如下:
由此可见执行减法运算的时候,自动执行算术运算,但是执行加法运算的时候,默认将“+”作为连接符,它的转换规律如下:
- 对于减号运算符,因为字符串不支持减法运算,所以系统自动将字符串转换成数值。
- 对于加号运算符,因为字符串可用加号作为连接运算符,所以系统自动将数值转换成字符串,并将两个字符串进行连接运算。
自动类型转换虽然方便,但是可读性差,JS提供了以下几个函数来执行强制类型转换:
- toString():将布尔值、数值等转换成字符串;
- parseInt(): 将字符串、布尔值等转换成整数;
- paraFloat(): 将字符串、布尔值等转换成浮点数;
- 字符串值:如果字符串是数值字符,则可以转换成数值,否则将转换成NaN;
- undefined、null、布尔值及其他对象:一律转换成NaN.
注:使用toString()函数将各种类型的值向字符串转换时,结果全是object,因为语法是object.toString()。
<script type="text/javascript">
// 定义值为3.145的字符串变量
var a = "3.145";
// 直接相加,使用自动类型转换。
var b = a + 2;
var c = 6.25;
// 使用强制类型转换
var d = toString(c);
var e = c.toString();
var f = parseFloat(a) + 2;
alert (b + "\n" + d + "\n"+ e + "\n"+ f);
</script>
