js有哪些数据类型,以及js数据类型之间如何互相转化
2020-06-16 本文已影响0人
萤火虫叔叔
一、结论环节
通过typeof
,可以看到,js中一共有6种数据类型:number
,string
,boolean
,object
,undefined
,null
。
console.log(typeof(0)) //number
console.log(typeof('')) //string
console.log(typeof(true)) //boolean
console.log(typeof({})) //object
console.log(typeof(undefined)) //undefined
console.log(typeof(null)) //null
//注意,NaN属于number,NaN表示非数字
console.log(typeof(NaN)) //number
二、实验环节
1. 其他类型转成string
string
类型最神通广大,所有类型都可以转化成string
。
console.log(String(0)) //0
console.log(String(true)) //true
console.log(String({})) //[object Object]
console.log(String(undefined)) //undefined
console.log(String(null)) //null
//ps,如果想以json字符串的方式打印出object类型的数据,可以
console.log(JSON.stringify({name: 'jack'})) // 打印:{"name":"jack"}
2. 其他类型转成number
2.1 string
转number
:如果string
是一个只包含数字的字符串,则直接转成该字符串表示的数字,如果包含其他字符,则为NaN
,注意,空字符串也能转成0
。
2.2 boolean
转number
:true
转成1
,false
转成0
.
2.3 object
、undefined
、null
转number
:均为NaN
。
console.log(Number('')) //打印:0
console.log(Number(' ')) //打印:0
console.log(Number('0')) //打印:0
console.log(Number('123')) //打印:123
console.log(Number('abc')) //打印:NaN
console.log(Number(true)) //打印:1
console.log(Number({})) //打印:NaN
console.log(Number(undefined)) //打印:NaN
console.log(Number(null)) //打印:NaN
3. 其他类型转成boolean
3.1 number
转boolean
:0
转成false
,其余的转成true
。
3.2 string
转boolean
:空字符串转成false
,其余的转成true
。
3.3 所有的object
都转成true
,undefined
和null
转成false
。
console.log(Boolean(0)) //打印: false
console.log(Boolean(-999)) //打印: true
console.log(Boolean('')) //打印: false
console.log(Boolean('0')) //打印: true
console.log(Boolean({})) //打印: true
console.log(Boolean(undefined)) //打印: false
console.log(Boolean(null)) //打印: false
console.log(Boolean(' ')) //打印: true
值得注意的是,空格,制表符,换行符,回车符等空白符转成number
都是0
,但是如果转成boolean
,却是true
。
console.log(Number('')) //打印: 0
console.log(Number(' ')) //打印: 0
console.log(Number('\t\n\r ')) //打印: 0
console.log(Boolean('')) //打印: false
console.log(Boolean(' ')) //打印: true
console.log(Boolean('\t\n\r ')) //打印: true
4. 其他类型转成object
只有json
字符串可以转成object
。
console.log(JSON.parse("{\"name\":\"jack\"}")) //打印:{ name: 'jack' }
留一个作业,下面这两个的打印结果是什么?
console.log('' == true)
console.log(' ' == true)
答案:传送门
如有疑问,看下图找答案!