您的位置:首页 > Web前端 > JavaScript

JavaScript数据类型转换方法总结(转)

2013-05-30 18:23 549 查看

转换为布尔型

用两次非运算(!):

!!5 ==>true


用布尔型的构造函数:

new Boolean(5) ==> true


值转换为布尔类型为false:0,+0,-0,NaN,""(空字符串),undefined,null

除上面的值其他值在转换以后为true,需要特别提到的是:"0",new Object(),function(){}

转换为字符串类型

加上空字符串"":

123 + "" ="123"


用字符串构造函数:

new String(123) ="123".


需要特别注意的转化:

1
+0 ==>
"0"
2
-0 ==>
"0"
3
-Infinity ==>
"-Infinity"
4
+Infinity ==>
"+Infinity"
5
NaN ==>
"NaN"
6
undefined ==>
"undefined"
7
null
==>
"null"
8
new
Object() ==>
"[object Object]"
9
function
(){} ==>
"function(){}"

转换为数值型

取正(+), 减零 (-0), 乘一,(*1),除以一(/1),取负(-,这个得到相反的值):

1
+
"123"
=123
2
+
true
=1
用构造函数Number();

1
new
Number(
"123"
) =123
几个需要特别注意的转化:

01
""
(空字符串) ==>0
02
"010"
==>10
03
"0x10"
(16进制) ==>16
04
"-010"
==>-10
05
"-0x10"
==>NaN
06
undefined ==>NaN
07
null
==>0
08
true
==>1
09
false
==>0
10
new
Object() ==>NaN
11
new
function
(){} ==>NaN

隐式类型转换

二元加法运算(+):如果两个操作数中有一个是String类型,将把两个操作数转换为String类型再相加。如果两个操作数中没有字符串类型,那么将把两个操作数转换为数值类型再做运算。

1
"123"
+123 =
"123123"
;
2
123+123 =246
3
true
+
true
=2
4
true
+undefined =NaN (因为undefined转换为数值为NaN,所有结果为NaN)
5
true
+
null
=1 (
null
转换为数字是0)
6
"123"
+
null
=
"123null"
(包含字符串将转化为字符串相加)
7
"123"
+undefined =
"123undefined"
(undefined同样适用)
8
1 +2 +
"123"
=
"3123"
(1+2是首先按照数值型计算的)
二元减乘除运算(-*/):因为只有数值类型才有 - * / 运算,所以会先将两个操作数转换为数值型再做运算。

1
"123"
-123 =0
一元取正(+),取负运算符(-):取正或者取负都是针对数值型的运算,所以会将操作数转换为数值型再做运算。

1
+
"123"
=123
2
-
"123"
=-123
3
+
"123e"
=NaN
4
+
"123f"
=NaN
5
+
"123e-2"
=1.23
一元非(!)运算符:非运算符需要将操作数转化为布尔类型。

1
!
"123"
=
false
2
!!
"123"
=
true
3
!123 =
false
4
!!123 =
true
逻辑运算符(&&)和(||):

在&&或者||的两侧被判断的时候会被转为布尔类型进行判断,但是我在测试的时候却发现一个有趣的事情。

&&运算符:如果有一个项为false,那么表达式返回false,如果所有的项都不为false,那么表达式返回最右边一个项的原始值。

123 && 23 && 45 返回 45,而不是我们想象中的true。所以如果有 123 && 23 ==true 那么应该是false。至于if(123 && 23) 认为是true那应该是把23转换为布尔类型了。

||运算符:对 || 测试的结果也和我想象的不一样,|| 返回第一个转换以后不为false的值,如果都为false,它将返回最后一个为false的值(未进行类型转化之前的值)。

举例:123 || 23 返回 123,而不是想象中的true.false || null 返回null, 而不是想象中的false。

类型转换函数

parseFloat转换为浮点数:

字符解析函数获取每一个字符直到遇到不属于数值的字符,然后返回它已获取的数值。几个需要特别注意的:

1
""
(空字符串) ==>NaN
2
"123e-2"
==> 1.23 (科学计算法是可以识别的)
3
"010"
==>10 (8进制不能识别)
4
"0x10"
==>0 (16进制不识别)
5
"-010"
==>-10
6
null
,undefined,
true
,
false
,
new
Object(),
function
(){} ==>NaN
parseInt转换为有符号整数:

跟parseFloat相似,但是他会把小数位舍掉(注意不是四舍五入,是完全舍弃,跟Math.floor处理方式一样),而且他可以识别八进制和16进制表示方式:

1
123e-2 ==> 1
2
"123e-2"
==>123
3
"010"
==> 8
4
"0x10"
==>16
5
"-010"
==> -8
6
"-0x10"
==>-16
7
null
,undefined,
true
,
false
,
new
Object(),
function
(){},-Infinity +Infinity NaN ==>NaN
三个取整函数的区别:

Math.ceil():"天花板",很形象吧?就是取大于等于参数的最小整数。

1
8.7 ==> 9
2
-8.7==>-8
Math.floor():"地板",取小于等于参数的最小整数。

1
8.7 ==>8
2
-8.7 ==>-9
Math.round():"四舍五入"取整数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: