一、其它数据类型转字符串的方法
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变,这就是浅拷贝
网友评论