javascript的栈和堆的区别?

JavaScript018

javascript的栈和堆的区别?,第1张

js变量存储有栈和堆存储,访问时一种是按值一种是按引用,基础变量是按值,新建的时候就是建立一个独立的副本已经与等号右边的值没有关系。对象是按引用访问,新建的时候只是一个对象的引用而已它代表这个对象。

简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型。

简单数据类型在存储时,变量中存储的是值本身,因此叫做值类型。

string、number、boolean、undefined、null

null是特殊存在,返回的是object,如果要创建空对象,可以用null。

用new创建的都是复杂数据类型

(1)栈:由操作系统自动分配释放存放函数的参数值、局部变量的值等。其操作系统类似于数据结果中的栈。

简单数据类型存放到栈里面

(2)堆:一般由程序员分配释放,若程序员不释放,由垃圾回收机制回收。

复杂数据类型存放到堆里面