saber酱的抱枕

Fly me to the moon

04/18
12:50
学习

javascript的类型转换

1.转换成字符串:toString() 方法
除Undefined、Null之外的3种主要的原始类型—— Boolean 值、数字和字符串都有 toString() 方法,可以把它们的值转换成字符串。代码如下:

	alert((10).toString());
	alert((false).toString());

但是Number 类型的 toString() 方法比较特殊,它有两种模式,即默认模式和基模式。上例中采用了默认模式,此时toString() 方法只是用相应的字符串输出数字值。基模式则可以用不同的基输出数字,例如将数字转化为二进制、十六进制等并输出字符串。这个“基”实际上是toString() 方法的一个参数。代码如下:

alert((10).toString(2));//将10转化成2进制的1010

不带参数的toString()其实等同于基为10的toString(10)

2.转换成数字
javascript有两种转换为数字的方法: parseInt()parseFloat()。前者把值转换成整数,后者把值转换成浮点数。只有对 String 类型使用这些方法,它们才能正确运行;对其他类型返回的都是 NaN。NaN即 “Not a Number”。

parseInt() 方法的处理方式是,从位置 0 开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字符之前的字符串转换成整数。小数部分将被丢弃。

alert(parseInt(2.5));

parseInt() 方法也有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。如下的代码:

alert(parseInt("10", 2));//将10转化为2进制

如果原数字是十进制并且包含前导 0,那么最好采用基数 10,这样才不会意外地得到八进制的值。如下:

parseInt("010");   //returns   8
parseInt("010",   8);   //returns   8
parseInt("010",   10);   //returns   10

parseFloat() 方法的处理方式也是从位置 0 开始查看每个字符,直到找到第一个非有效的字符为止,但它会保留小数部分。字符串必须以十进制形式表示浮点数,而不是用八进制或十六进制。
parseFloat() 方法可以设置精度:parseFloat(num).toFixed(7)
此外,parseFloat() 方法也没有基模式。

3.强制类型转换
javascript中可用的 3 种强制类型转换如下:
Boolean(value) - 把给定的值转换成 Boolean 型;
Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
String(value) - 把给定的值转换成字符串。

Boolean() 函数:
当要转换的值是至少有一个字符的字符串、非 0 数字或对象时,Boolean() 函数将返回 true。如果该值是空字符串、数字 0、undefined 或 null,它将返回 false。

Number() 函数:
Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 方法的处理方式相似,只是它转换的是整个值,而不是部分值。false返回0,true返回1,null返回0,undefined和其他不能转化为数字的数值将会返回NaN。

String() 函数:
String() 函数可把任何值转换成字符串。强制转换成字符串和调用 toString() 方法的唯一不同之处在于,对 null 和 undefined 值强制类型转换可以生成字符串而不引发错误:

alert(String(undefined));//将转化为字符串'undefined'

查看w3c中对于数值转换的页面

javascript的类型转换