js之堆和栈的区别

1,859 阅读1分钟

要了解堆和栈的区别,首先要了解下数据类型

数据类型分为基本类型以及引用类型

基本类型:Undefined、Null、Boolean、Number 和String。这些类型在内存中分别占有固定大小的空间,他们的值保存在栈空间,我们通过按值来访问的。   

引用类型:引用类型,值大小不固定,栈内存中存放地址指向堆内存中的对象,是按引用访问的。

基本类型在当前执行环境结束时销毁,而引用类型不会随执行环境结束而销毁,只有当所有引用它的变量不存在时这个对象才被垃圾回收机制回收。

栈优点:存取速度比堆快,仅次于直接位于CPU中的寄存器,数据可以共享;

栈缺点:存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。