js常见的类型转换有3种,
1. 转为string类型
2.转为boolean类型
3.转为number类型
这三种转换也是隐式转换中的所有转换类型
toString()转换为字符串
原始值转化为字符串
(2).toString() //”2″
(true).toString() //”true”
(false).toString() //”false”
(null).toString() //报错,没有toString这个属性
(undefined).toString() //报错,没有toString这个属性
引用值 转化为字符串
- 对象变成[object Object]
({}).toString() //”[object Object]”
({name:”lion”}).toString() //”[object Object]”
- function对象变成字符串的function
(function(){}).toSring() //”function(){}”
(function(){console.log(123)}).toString() //”function(){console.log(123)}”
- 将数组转换为字符串
(“[ 1,2,3 ]”).toString() //’1,2,3′
(“”).toString() //”
([1,[1,2],[1,2,3]]).toString //’1,1,2,1,2,3′
这里如果设置
1 2 3 |
var a =2; a.toString(); console.log(typeof a); //"number" |
这里就会涉及到另外一个知识包装对象,在之后会讲这里先不说
Boolean转为布尔类型
只有一下是会转为false,其余数据类型都为true
Boolean(0) //false 数字0
Boolean(NaN) //flase
Boolean(”) //false
Boolean(undefined) //false
Boolean(null) //false
Boolean(false) //false
取反运算符!
取反操作符就是对布尔值取反
!true -> false
!false -> true
对其他类型怎么取反呢
先将其他类型转换为布尔类型利用Boolean()转换,再取反.这里就涉及到隐式转换,隐式转换就是自动执行Boolean函数
![] ->!true->false
!{}->!true->false
!!”->false
!!相当于Boolean()
Number()转化数字类型
原始值转化为数字类型
Number(”)->0
Number(‘ ‘)->0
Number(‘2px’) ->NaN 只要字符串有除空格外的非数字都是NaN
Number(10) -> 10
Number(“12.5”)->12.5
Number(true)->1
Number(false)->0
Number(null)->0
Number(undefined)->NaN
归纳一下Number()转化为0的数据类型
” 空字符串
‘ ‘ 含一个空格字符串
false boolean的false
null null
转化为NaN的数据类型
只要字符串有除空格外的非数字都是NaN
undefined
转引用值为数字分为两步
1.先转为字符串
2.在把字符串转为数字
Number({})->Number([object Object])->NaN
Number(function(){})->Number(‘function(){}’)->NaN
Number([])->Number(”)->0
Number([1,2])->Number(‘1,2’)->NaN
判断是不是NaN的函数isNaN()
<isNaN(0) //是不是NaN,不是
>false
<isNaN(NaN) //是不是NaN,是的
>ture
当判断其他的数据类型的时候,isNaN() ,先转为数字再判断,如果碰上引用类型是先将引用类型转为字符串,再转为数字,再判断是不是NaN
布尔值:
isNaN(true)->isNaN(1)->false
isNaN(false)->isNaN(0)->false
字符串:
isNaN(“12.5”)->isNaN(12.5)->false
isNaN(“12.5px”)->isNaN(NaN)->true
isNaN(“12.5 “)->isNaN(12.5)->false
isNaN(null)->isNaN(0)->false
isNaN(undefied)->isNaN(NaN)->true
引用值:
isNaN({})->isNaN(‘[object Object]’)->isNaN(NaN)->true
isNaN([])->isNaN(”)->isNaN(0)->false
isNaN([1,2])->isNaN(‘1,2’)->isNaN(NaN)->true
isNaN(function(){})->isNaN(‘function(){}’)->isNaN(NaN)->true
parseInt取整
对于数字类型
parseInt(10.2)->10
parseInt(true)->NaN
parseInt(false)->NaN
parseInt(null)->NaN
parseInt(undefined)->NaN
parseInt(”)->NaN
Number()与parseInt()对于字符串的处理
Number只要字符串中有非数字,就是NaN
parseInt(“12.5px”) 只要有从左向右,数字,会提取出来12
parseFloat(“12.5px”) 12.5
练习:
Number(‘123lion’)
>NaN
Number(typeof true)
>NaN
Number( typeof typeof true )
>NaN
Number(!NaN)
>0
parseInt(‘lion123lion’)
>NaN
Boolean([])
>true
!!null
>false
({}).toString()
>'[object Object]’
([23,false]).toString()
’23,false’
看完觉得自己对类型转化有了充分的了解