四、数据类型转换
强制类型转换
1 )将一个数据类型强制转化为其他的数据类型。
2 )类型转换就是指将其他的数据类型转换为
String、Number、Boolean
2.1 转换为String类型
++ + 将任意数据类型转换为String类型:
1 ) 强制类型转换
a) String ( ) 方法
1 ) 适用于任何数据类型(null , undefined 转换后为null 和undefined )
2 ) 内部原理: 对于Number、Boolean类型数据转换实质上也是调用了toString ( ) 方法。
对于null 、undefined 不会调用toString ( ) ,而是将null 直接转换为“null ”。将undefiend直接转换为“undefined ”
b) toString ( ) 方法
1 ) null 、undefined 没有toString ( ) 方法, 调用报错。
2 ) 隐式类型转换
利用 x+ “” 来实现字符串隐式类型转换
1 ) 内部原理:任意类型的数据与字符串相加,等同于与字符串拼接。
>>>>>> String(x) 函数
< script>
var s= 12 ;
s= String ( s) ;
console. log ( s) ;
var s2= true ;
s2= String ( s2) ;
console. log ( s2) ;
var s3= null ;
s3= String ( s3) ;
console. log ( s3) ;
var s4= undefined ;
s4= String ( s4) ;
console. log ( s4) ;
< / script>
>>>>>> x.toString()方法
var s= 12 ;
s= s. toString ( ) ;
var s2= true ;
s2= s2. toString ( ) ;
>>>>>> x.toString()方法。null和undefined这两个值没有toString(),调用就会报错
var s= null ;
s= s. toString ( ) ;
var s2= undefined ;
s2= s2. toString ( ) ;
>>>>>> String类型隐式类型转换
console. log ( 12 + "" ) ;
console. log ( true + "" ) ;
console. log ( null + "" ) ;
console. log ( undefined + "" ) ;
console. log ( NaN + "" ) ;
2.2 转换为Number类型
++ + 将任意数据类型转换为Number类型:
++ + 强制类型转换
1 ) Number ( ) 函数,适用于任何数据类型
1 ) 字符串 -- - > 数字
a) 如果字符串中都是数字,则直接转换为数字。
b) 如果字符串中有非数字,则转换为NaN
c) 如果字符串是一个空串或是一个很多空格的字符串,则转换为0.
2 ) 其他
Number ( true ) = 1 ;
Number ( false ) = 0 ;
Number ( null ) = 0 ;
Number ( undefined ) = 0 ;
2 ) parseInt ( x) 函数与parseFloat ( x) 函数 ,从左到右提取字符串中有效数字。
a) parseInt ( x) : 把一个字符串转换为一个整数。
parseFloat ( x) : 把一个字符串转换为一个浮点数。
b) parseInt ( x) 、parseFloat ( x) 可以将一个字符串中从左到右的有效数字提取出来,然后转化为Number。
c) 如果没有有效数字,则返回NaN
++ + 隐式类型转换
方式一: 利用 【x- 0 、 x* 1 、 x/ 1 】来实现Number类型转换
内部原理: 非Number的类型的数据在做运算时,首先会把自己转化为Number在做运算。
其底层实际上也是用了Number ( ) 函数
方式二: 利用一元运算符【 + x 】 来实现Number隐式类型转换
内部原理:同上!!!
a)Number强制类型转换
>>>>>> Number(x)
< script>
var s= "123" ;
s= Number ( s) ;
console. log ( s)
var s2= "123abc" ;
s2= Number ( s2) ;
console. log ( s2)
var s3= "" ;
s3= Number ( s3) ;
console. log ( s3)
var s4= " " ;
s4= Number ( s4) ;
console. log ( s4)
< / script>
>>>>>> Number(x),null、undefined转数字
< script>
var s= null ;
s= Number ( s) ;
console. log ( s)
var s2= undefined ;
s2= Number ( s2) ;
console. log ( s2)
< / script>
>>>>>> parseInt(x)
< script>
var s= "123" ;
s= parseInt ( s) ;
console. log ( s) ;
var s2= "123abc" ;
s2= parseInt ( s2) ;
console. log ( s2) ;
var s3= "123abc123" ;
s3= parseInt ( s3) ;
console. log ( s3) ;
var s4= "abc123" ;
s4= parseInt ( s4) ;
console. log ( s4) ;
< / script>
>>>>>> parseFloat(x)
< script>
var s= "123.13" ;
s= parseFloat ( s) ;
console. log ( s) ;
var s2= "123.14abc" ;
s2= parseFloat ( s2) ;
console. log ( s2) ;
var s3= "123.13.14abc123" ;
s3= parseFloat ( s3) ;
console. log ( s3) ;
var s4= "abc123.13" ;
s4= parseFloat ( s4) ;
console. log ( s4) ;
< / script>
b)Number隐式类型转换
>>>>>> 利用减法、乘法、除法隐式转换
console. log ( "13" / 1 ) ;
console. log ( true / 1 ) ;
console. log ( null / 1 ) ;
console. log ( undefined / 1 ) ;
console. log ( NaN / 1 ) ;
console. log ( "13" - 0 ) ;
console. log ( true - 0 ) ;
console. log ( null - 0 ) ;
console. log ( undefined - 0 ) ;
console. log ( NaN - 0 ) ;
console. log ( "13" * 1 ) ;
console. log ( true * 1 ) ;
console. log ( null * 1 ) ;
console. log ( undefined * 1 ) ;
console. log ( NaN * 1 ) ;
>>>>>> 一元运算符隐式转换
console. log ( + "12" ) ;
console. log ( + true ) ;
console. log ( + null ) ;
console. log ( + undefined ) ;
console. log ( + NaN ) ;
2.3 转换为Boolean类型
转换为Boolean类型:
1 ) 布尔值转换:
0 NaN '' null undefined 转化成布尔值是false ,
其余的都是true
2 ) 转换方式
a) 强制类型转换: Boolean ( ) 函数
b) 隐式类型转换:利用逻辑运算符双!
! ! x
内部原理: 非Boolean类型的数据在做逻辑非运算时,首先会转化为Boolean类型在做运算。
其底层也是也是调用了Boolean函数。
a)Boolean(x)函数
console. log ( Boolean ( 12 ) )
console. log ( Boolean ( "12" ) )
console. log ( Boolean ( "" ) )
console. log ( Boolean ( " " ) )
console. log ( Boolean ( null ) )
console. log ( Boolean ( undefined ) )
console. log ( Boolean ( NaN ) )
b)Boolean隐式类型转换
console. log ( ! ! 11 )
console. log ( ! ! "" )
console. log ( ! ! " " )
console. log ( ! ! "12" )
console. log ( ! ! null )
console. log ( ! ! undefined )
console. log ( ! ! NaN )