数据类型的转换
JavaScript 是 一种动态数据类型语 言,变量 是没有类型的,可以随机赋予任意值。但是,数据本身和各种运算是有类型的,因此运算时变量 需要转换类型, 而且转换 非常灵活。 大多数情况下,这种数据类型转换是 自动的,但是有时也需要 手动强制转换。
隐式类型转换
隐式类型转换,即 自动转换。JavaScript 支持 自动类型转换,这种类型的功能转换 非常强 大。
转换为字符串
将 一个值加上字符串
10 + "10";
10 + "";
10 + "hello";
转换为数字
在值的前 面使 用加号操作符
+“10”;
使 用减、乘、除、模操作符
“10” - 1; "hello" * 2;
转换为布尔值
在值的前 面使 用 非 ! 操作符两次
!!"foo";
显式类型转换
强制转换成数字
parseInt() 函数
parseInt() 函数可解析 一个字符串 ,并返回 一个整数。
解析流程:
parseInt() 方法 首先查看字符串 中的第 一个字符,判断它是否是 一个有效的数字;如果不 是,该 方法将返回NaN,不 再继续执 行 其他操作。
但如果该字符是有效数字,该 方法将继续查看字符串 中的第 二个字符,进 行 同样的测试。
这 一过程将 一直持续,直到发现 非有效数字的字符为 止,此时 parseInt() 函数将把该 非有效字符之前的字符串 转换成数字。
var num = parseInt("12345px");//返回12345
var num1 = parseInt("0xA"); |
//10(0x开头的按 十六进制处理 。a为10,b为11...) |
|
var num2 |
= parseInt("56.9"); |
//56 |
var num3 |
= parseInt("red"); |
//NaN |
parseFloat() 函数
parseFloat() 函数可解析 一个字符串 ,并返回 一个浮点数。
解析流程:
parseFloat() 方法与 parseInt() 方法的处理 方式相似,从字符串 的第 一个字符开始查看,直到找到第 一个 非有效的字符为 止,然后把该字符之前的字符转换成数字。
如果参数字符串 的第 一个字符不 能被解析成为数字,则 parseFloat() 返回 NaN。
“ 非有效字符” 指的是除了 正负号(+或-)、数字(0-9)、 小数点、或者科学计数法中的指数(e或E)以外的字符。如果有两个 小数点,第 二个 小数点也会被看作“ 非有效字符”。
var fNum1 = parseFloat("12345red");//返回 12345
var fNum2 = parseFloat("0xA");//返回 NaN
var fNum3 = parseFloat("11.2");//返回 11.2
var fNum4 = parseFloat("11.22.33");//返回 11.22
var fNum5 = parseFloat("0102");//返回 102
var fNum1 = parseFloat("red");//返回 NaN
Number() 函数
使 用 Number() 函数,可以将任意类型的值转化成数字。
解析流程:
Number() 函数的强制类型转换与 parseInt() 和 parseFloat() 的处理 方式相似,只是它转换的是整个值, 而不 是部分值。
parseInt() 和 parseFloat() 只转换第 一个 无效字符之前的字符串 ,因此“1.2.3”将分别被转换为“1”和“1.2”。但是 用 Number() 进 行 强制类型转换,“1.2.3”将返回NaN,因为整个字符串 值不 能转换成数字。
如果字符串 值能被完整的转换,Number() 将判断是调 用 parseInt() 还是 parseFloat()。
Number() 函数关于原始类型值的转换规则:
数据类型 |
描述 |
例 子 |
|
|
|
数值 |
转换后还是原来的值 |
10 => 10 |
|
|
|
字符串 |
如果可以解析成数字,则转换成相应的数字,否则得到NaN。空字符 |
"10.01.1" => |
串 转为0。 |
NaN |
|
|
||
|
|
|
布尔值 |
true 转为1,false 转为0 |
false => 0 |
|
|
|
undefined |
转为 NaN |
undefined => |
NaN |
||
|
|
|
|
|
|
null |
转为 0 |
null => 0 |
|
|
|
强制转换成字符串
String() 函数
使 用String() 函数,可以将任意类型的值转化成字符串 。
String() 函数关于原始类型值的转换规则:
数据类型 |
描述 |
例 子 |
|
|
|
数值 |
转为相应的字符串 |
10 => "10" |
|
|
|
字符串 |
转换后还是原来的值 |
"10.01.1" => "10.01.1" |
|
|
|
布尔值 |
true 转为 "true",false 转为 "false" |
false => "false" |
|
|
|
undefined |
转为 "undefined" |
undefined => "undefined" |
|
|
|
null |
转为 "null" |
null => "null" |
|
|
|
强制转换成布尔值
Boolean() 函数
使 用Boolean() 函数,可以将任意类型的变量 转为布尔值。
Boolean() 函数关于原始类型值的转换规则:
以下五个值的转化结果为false,其他的值全部为true。
值 |
转换结果 |
|
|
undefined |
false |
|
|
null |
false |
|
|
0 |
false |
|
|
NaN |
false |
|
|
"" |
false |
|