数据类型转换汇总

数据类型转换      null  undefined  string number boolean          Array   Date   RegExp    Object   Function 

把其他数据类型转换成number类型

isNaN Number parseInt parseFloat

在进行加减乘除数学运算的时候

true -> 1   false->0

' ' -> 0   '12'->12  '12px' ->NaN/12  '缓冲' ->NaN

null -> 0  undefined ->NaN 

 { }  /^$/  function(){}  -> NaN

[ ]->' ' -> 0

[12] ->'12' ->12

[12,13]->'12,13' ->NaN

引用数据类型转换为数字

通过toString 方法把数组转换为字符串,然后调用Number方法转换为数字

 

js 中的数学运算

 +、-、*、/ 加减乘除

除了加法有特殊性 其他的运算符都是数学运算,也就是遇到非数字类型 ,需要把其转换为number再进行运算

 

加法的特殊性

在遇到字符串的时候 +不是数学运算 而是字符串拼接   只要不遇到字符串就是数学运算

 

1 - ‘1’ -> 0

10*null -> 0

10/undefined ->NaN

10*[10] ->100

 

1+‘1’ ->  '11'

null + '1' -> 'null1'

字符串拼接:把其它的值转换为字符串再拼接

其它数据类型的toString是直接把值用单(双)引号包起来即可,只要对象的有特殊性,对象.toString() === '[object Object]' 检测对象类型

 

1+null ->1

1+true->2

2+undefined -> NaN

NaN + [ ]  - > NaN + ' ' ->'NaN'

'NaN' +'瞅瞅‘ ->'NaN瞅瞅’

 

将其它数据类型转换成布尔类型

Boolean 、! 、!!  

在条件判断的时候,也是转换为布尔类型  然后验证条件的真假

 

只要 0  NaN  空字符串  null   undefined 五个转换为 false    其它的都是转换为true

[ ] -> true

-1 -> true

 

if(box){

    首先把box 变量存储 的值获取到,转换为布尔类型,如果为true 条件成立 ,反之不成立

}

 

 

if(3+'3px'){

    3+‘3px’ ='33px'

}

if(3-'3px'){

    3-'3px' =NaN

   

}

 

 

在使用 == 进行比较的时候

在使用 == 进行比较的时候,如果左右两边的数据类型不相同,浏览器会默认转换为相同的类型,然后再进行比较

 

对象和对象:比较的是空间地址,     

[ ] == [ ]  -> false       不是相同的空间所以不相等

var  a = {} ;

var  b =a ;

a==b  true

 

对象和数字:把对象转换为数字

[ ] == 0 ->  true    [ ] -> ' ' -> 0

({ }) == NaN -> false NaN和自己不相等和其他任何值都不想等

 

对象和字符串:   把两边都换为数字比较

[ ] == ' '  -> true

 

对象和布尔: 把两边都转换为数字

[ ] == true ->  0 == 1  false 

[ ] == false  0==0 true

![ ] == false   ![ ] 把数组变为Boolean  再取反 = false  -> false  == false -> true

 

 

字符串和数字:字符串转换为数字

字符串和布尔:都转换为数字

布尔和数字:布尔转换为数字

 

 

总结: == 比较  左右两边数据类型不一样 浏览器会把两边都转换为数字然后再比较,但是  null  和undefined 除外

 

null  == undefined  ->true 

null === undefined ->false

 

null 以及 undefined  和其它 任何值不相等

null  == 0   false

 

posted on 2017-12-30 11:36  cm笔记簿  阅读(163)  评论(0编辑  收藏  举报

导航