任意类型转字符串
-
String(x)
image.png
- x.toString()
var n = null
n.toString()
报错'toString' of null,没有这个api
1+ '1' = (1).toString() + '1' ="11"
-
x+''
x+ ''
任意类型转数字
任意类型转布尔
- Boolean(x)
- !!x
![](https://img.haomeiwen.com/i16597614/ddf082dd041931f2.png)
number(0,NaN),string(''),null,undefined,object(全是ture)
关于内存的四个题目
var a = 1
var b = a
b = 2
请问 a 显示是几?
var a = {name: 'a'}
var b = a
b = {name: 'b'}
请问现在 a.name 是多少?
var a = {name: 'a'}
var b = a
b.name = 'b'
请问现在 a.name 是多少?
var a = {name: 'a'}
var b = a
b = null
请问现在 a 是什么?
![](https://img.haomeiwen.com/i16597614/523682d62905c58a.png)
![](https://img.haomeiwen.com/i16597614/fc108fd45469254a.png)
![](https://img.haomeiwen.com/i16597614/0bd7958f19c8a982.png)
![](https://img.haomeiwen.com/i16597614/2813a5d4262a79e5.png)
一道面试题
![](https://img.haomeiwen.com/i16597614/6587098d67302805.png)
GC 垃圾回收
如果一个对象没有被引用,它就是垃圾,将会被回收
![](https://img.haomeiwen.com/i16597614/4b95e17a51138569.png)
var fn = function(){} //undefined
document.body.onclick = fn//f (){}
fn = null // null
![](https://img.haomeiwen.com/i16597614/fdce3b634581aaf5.png)
浅拷贝VS深拷贝
var a = 1
var b = a
b = 2 //这个时候改变 b
a 完全不受 b 的影响
那么我们就说这是一个深复制
b变不影响a就是深拷贝
所有数据基本类型赋值就是深拷贝
对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。
什么是深拷贝,就是对 Heap 内存进行完全的拷贝。
![](https://img.haomeiwen.com/i16597614/3cb63384e660424e.png)
var a = {
name:'a'}
var b = a
b.name = 'b'
a.name //也是'b'
b变致a变就是浅拷贝
![](https://img.haomeiwen.com/i16597614/940aba62e714bed6.png)
网友评论