JS里的数据类型转换

2019-03-28  本文已影响0人  凛冬的守夜人

一、其它数据类型转字符串的方法

1、tostring()

var n = 1
n.tostring()        
 //"1"
var n = true
n.tostring()       
 //"true"
var obj = {}
obj.tostring()      
//"[object Object]"

null, undefined无法通过tostring变字符串

2、x + ''

1+''           //"1"
true+''       //"true"
obj+''        //"[object Object]"
null+''       //"null"
undefined+''    //"undefined"

3、String()

var n=1
String(n)  
//"1"

二、其它数据类型转布尔值的方法

1、Boolean()

Boolean(1)                //true
Boolean(123)              //true
Boolean(0)                //false
Boolean('')               //false
Boolean(' ')              //true
Boolean(null)             //false
Boolean(undefined)        //false
Boolean({})               //true

2、!!x

!!1             //true
!!0            //false
!!null        //false

在变布尔值时,以下五个是变为false:
0     NaN     ''      null      undefined

三、其它数据类型转数值的方法

Number()

parseInt()

parseFloat()

'1'-0

+'1'

四、4个关于内存的题目

在js中,基本类型存储在栈中,复杂类型,也就是object存储在堆中。

题目一:

var a = 1
var b = a
b = 2
a = ?

答:a = 1

题目二:

var a = {name:'a'}
var b = a
b = {name:'b'}
a.name = ?

答:a.name = a

题目三:

var a = {name:'a'}
var b = a
b.name = 'b'
a.name = ?

答:a.name = b

题目四:

var a = {name:'a'}
var b = a
b = null
a.name = ?

答:a.name = a

一道较难的题目:

var a = {n:1}
var b = a
a.x = a = {n:2}

alert(a.x)        //undefined
alert(b.x)        //[object Object]

五、深拷贝和浅拷贝

var a = 1
var b = a
b = 2
a = ?

此时a的值仍为1,b变不影响a变,这就是深拷贝
基本类型的赋值都是深拷贝
var a = {name:'a'}
var b = a
b.name = 'b'
a.name = ?

此时a的name为'b',b变影响a变,这就是浅拷贝

上一篇 下一篇

猜你喜欢

热点阅读