内存空间的详细简答
堆(heap),栈(stack)与队列(queue)。
队列:是先进先出,
1 变量对象与基础数据类型
JavaScript的执行上下文之后,会创建一个叫做变量对象的特殊对象,JavaScript的基础数据类型往往保存在变量对象中
注:严格意义上变量对象放在堆内存中;但是由于变量对象的特殊只能,我们在理解时仍然需要将其于堆内存区分开来
基础数据类型都是一些简单的数据段,JavaScript中有5种基础数据类型:Undefined、Null、Boolean、Number、String
。基础数据类型都是按值访问,因为我们可以直接操作保存在变量中的实际的值。
2,内存空间管理
因为JavaScript具有自动垃圾收集机制,所以我们在开发时候好像不用关心内存的使用问题;内存的分配与回收完全实现了自动管理,但是还是需要了解好内存机制以便提高性能,从而写出更加优秀的代码
在JavaScript中,最常用的是通过标记清除的算法来找到哪些对象不再继续使用;因此a=null其实仅仅只是做了一个释放引用的操作,让a原本对应的值失去引用,脱离执行环境,这个值在下一次垃圾收集器执行操作时被找到并释放,而在适当的时候解除引用,是为页面获得更好性能的一个重要方式。
EG:在局部作用域中,当函数执行完毕,局部变量也就没有存在的必要了,因此垃圾收集器很容易做出判断并回收。但是在全局变量什么时候需要自动释放内存空间很难判断,因此在我们的开发中,需要尽量避免使用全局变量
要详细的了解垃圾收集机制,就要看书了