第4章 作用域和内存
1. 基本类型和引用类型
- 基本类型:
Undefined
Null
Boolean
Number
String
- 引用类型:
Object
- 基本类型,可以对其进行赋值操作,而引用类型相当于是一个指针,可以添加方法、属性
- 函数传参时基本类型会传递值,引用类型会传递指针,因此在函数内部修改引用类型的值其外部也会改变
2. 没有块级作用域
- 可以在函数外部访问到内部定义的变量的值
for(var i=0; i<3; i++){
continue;
}
console.log(i); // 3
if(true){
var a = 1;
}
console.log(a); // 1
3. 垃圾回收
- 垃圾的概念:
- 没有被引用的对象就是垃圾
- 多个对象互相引用,但是并没用,也是垃圾
- 清理方式:
- 标记清除
从根部出发看是否能达到某个对象,如果能达到则认定这个对象还被需要,如果无法达到,则释放它
从根出发,对能到达的所有对象都做一个标记,未被标记的被清除 - 引用计数(不能解决多对象互相引用)
看一个对象是否存在一个指向它的引用,如果没有人用它,则释放它
对每个对象的被引用次数计数,计数为0的被清除
- 标记清除