JS中的數(shù)據(jù)類型轉(zhuǎn)換是將其他的類型轉(zhuǎn)換為另一種類型。
其它類型轉(zhuǎn)number類型
方法有很多爷耀,主要分為以下5種秤掌。
(1)Number()方法
此方法較為嚴格,當全部為數(shù)值或者解析為全部數(shù)字時才會轉(zhuǎn)換余素,當出現(xiàn)非數(shù)字,或者出現(xiàn)空格時則返回NaN炊昆。
Number(123) // 324
Number('123') // 324
Number('123abc') // NaN
Number('123 abc') // NaN
當遇到空字符串時返回0桨吊。布爾類型時,true為1凤巨,false為0视乐。undefined類型轉(zhuǎn)換為NaN。null類型轉(zhuǎn)換為0敢茁。
//空字符串
Number('') // 0
//布爾值
Number(true) // 1
Number(false) // 0
//undefined類型
Number(undefined) // NaN
//null類型
Number(null) // 0
(2)parseInt()方法
該方法將其他類型轉(zhuǎn)換為整數(shù)佑淀,只取整數(shù)部分。返回值只有兩種:十進制數(shù)和NaN
parseInt('12.34') // 12
parseInt(.5)//0
parseInt('.5')//NaN彰檬,此時則無法轉(zhuǎn)換
parseInt('a')//NaN伸刃,非數(shù)字時
parseInt('123a456.7')//只轉(zhuǎn)換當前可以轉(zhuǎn)換部分
該方法還存在進制轉(zhuǎn)換方法,即第二個參數(shù)可以為按照該進制進行轉(zhuǎn)換逢倍,默認是十進制捧颅。如果第二位為0
、null
较雕、undefined
時自動忽略碉哑。
parseInt('011')//11,此時省略了‘,10’亮蒋,即按照十進制數(shù)轉(zhuǎn)換
parseInt('011',8)//9扣典,按照八進制轉(zhuǎn)換為十進制
parseInt('011',16)//17,按照十六進制轉(zhuǎn)換為十進制
從第一位開始能轉(zhuǎn)換多少就轉(zhuǎn)換多少慎玖,如果第一個字符不能轉(zhuǎn)換(‘+’號除外)贮尖,則返回NaN。
parseInt('abc')//NaN
parseInt('_123abc')//NaN
parseInt('.6')//NaN
parseInt('+1')//1
(3)parseFloat()方法
該方法是轉(zhuǎn)換為小數(shù)(帶小數(shù)部分)趁怔。
parseFloat(0.5)//0.5
parseFloat('123.5')//123
parseFloat('123.5')//12
與parseInt相似遇到不能轉(zhuǎn)換時远舅,就停止。
(4)減0方法
'123'-0//123
'12a3'-0//NaN
'123.2'-0//123.2
該方法無法區(qū)別整數(shù)和小數(shù)痕钢,且要求較為嚴格图柏,只要含有無法轉(zhuǎn)換部分則返回NaN。
(5)加‘+’法
+'123'//123
+'1.23'//1.23
+'1a23'//NaN
使用方法基本與減0法相似任连。
其他類型轉(zhuǎn)string類型
(1)String()法
該方法對不同類型使用:
- 數(shù)值:相應(yīng)的字符串蚤吹。
- 字符串:還是原來的值。
- 布爾值:true轉(zhuǎn)為'true',false轉(zhuǎn)為'false'裁着。
- undefined:轉(zhuǎn)為'undefined'繁涂。
- null:轉(zhuǎn)為字'null'。
- object:如果是對象則返回'[object Object]'二驰,數(shù)組則返回字符串類型的數(shù)據(jù)扔罪。
String(123) // '123'
String('abc') // 'abc'
String(true) //'true'
String(undefined) // 'undefined'
String(null) // 'null'
String({}) // '[object Object]'
String([1, 2, 3]) // "1,2,3"
(2).toString()法
(123).toString()//'123'
(1.23).toString()//"1.23"
('abc').toString()//"abc"
({}).toString()//"[object Object]"
([1, 2, 3]).toString()//"1,2,3"
//要符合標識符規(guī)則,不能出現(xiàn)有空格桶雀、字母等矿酵,
//除非該類型本身就是字符串類型。
(abc).toString()//報錯
(1a23).toString()//報錯
('1a23').toString()//"1a23"
('1 23').toString()//"1 23"
與String()方法類似矗积。
(3)還可以使用字符串拼接的方法
''+1//"1"
''+{}//"[object Object]"
''+1a23//報錯
總結(jié):轉(zhuǎn)換為string類型時伦糯,要符合標識符規(guī)則昨登,不能出現(xiàn)有空格孽江、字母等默勾,除非該類型本身就是字符串類型。
其他類型轉(zhuǎn)boolean類型
boolean類型只有兩個值乍恐,所以只有兩個返回值评疗,true和false。
Boolean(0)//false
Boolean(1)//true
Boolean(2)//true
Boolean(-1)//true
Boolean(NaN)//false
Boolean('hi')//true
Boolean('')//false
Boolean(null)//false
Boolean(undefined)//false
還可以使用!!
的方法實現(xiàn)其他類型轉(zhuǎn)布爾類型
!!0//false
!!1//true
!!''//false
!!'hi'//true
!!null//false
!!undefined//false
總結(jié):
- number中只有0和NaN是false茵烈。
- string中只有空字符串是false百匆。
- unll中null是false。
- undefined中undefined是false瞧毙。
- object中全部是true,包括數(shù)組和函數(shù)寄症。
falsy是在Boolean上下文中認定可轉(zhuǎn)換為false的值.
0
宙彪、NaN
、''
(空字符串)有巧、null
释漆、undefined