本文转载自https://zhuanlan.zhihu.com/p/48955605
js里数据类型包括其中:number、string、symbol、Boolean、null、undefined、object。我们所希望进行的数据类型转换大概包括以下几种:
- 转为string类型
- 方法一:浏览器自带API:String()方法。
eg: String(123) //"123"
String(true) //"true"
String(null) //"null"
String(undefined) //"undefined"
- 方法二:toString()方法。
eg: a=1; a.toString() //"1"
(true).toString() //"true"
null、undefined没有toString()方法;
object.toString() // [object, Object]→并非想要的;
- 方法三:+“”加空字符串,利用+的连接符特性(与字符串相加,优先将非字符串的数据转为字符串,再进行连接)。
eg: 1+"" //"1"
true+"" //"true"
null+"" //"null"
undefined+"" //"undefined"
obj={}; obj+"" // [object, Object]→并非想要的;
2. 转为number类型
一般都是将字符串里的数字转为number类型
方法一:Number()方法:但凡有不能转换的,直接返回NaN
eg: Number("123") //123
Number("a") //NaN
Number("1a2") //NaN
- 方法二:parseInt()方法,它会按顺序转换可以转换的,若无法转换,则停止,返回已转换了的,这是与Number()方法的不同之处
eg: parseInt("1",10)//将字符串“1”转为10进制数字:1;
parseInt("1a234") //1
parseInt("011") //11
parseInt("s") //NaN
- 方法三:parseFloat()方法
eg: parseFloat("1.23") //1.23
parseFloat("1.s2") //1
parseFloat("1.2s5") //1.2
parseFloat("s") // NaN
- 方法四:-0 方法,利用减号的运算特性(与数字相减,优先将非数字的转换为数字类型,再进行运算)
eg: "1"-0 //1
"1.23"-0 //1.23
"1.32s4"-0 //NaN
- 取正方法
eg: +"1"// 1
+".1" //0.1
+"-1" //-1
-"-1" //1
-(-"-1")//-1
+"s" //NaN
3. 转为Boolean类型
- 方法一:Boolean()方法
Boolean(1) //true
Boolean({}) //true
Boolean([]) //true
Boolean(" ")//(里面是空格字符)true
Boolean(0) //false
Boolean(NaN) //false
Boolean("") //false
Boolean(null) //false
Boolean(undefined) //false
只有这五个fasly值:0,NaN, ""(空字符串), null, undefined 转为Boolean类型时为false。
falsy值的定义:在Boolean上下文中认定可转换为false的值
方法二:两次取反
eg: !!true //true
!!1 //true
!!0 //false
!!{} //true