JS里的数据类型转换(转载)

本文转载自https://zhuanlan.zhihu.com/p/48955605

js里数据类型包括其中:number、string、symbol、Boolean、null、undefined、object。我们所希望进行的数据类型转换大概包括以下几种:

  1. 转为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

所有的对象(包括空对象、空数组、函数)转Boolean都是true!!!!!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容