堆栈
-
堆:队列优先,先进先出,由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈
-
栈:先进后出,动态分配的空间 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。
-
JavaScript的数据类型分为两大种:
- 基本类型:Undefined、Null、Boolean、Number 和 String,这5中基本数据类型可以直接访问,他们是按照值进行分配的,存放在栈(stack)内存中的简单数据段,数据大小确定,内存空间大小可以分配。
- 引用类型:即存放在堆(heap)内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。
可画出内存图: juejin.cn/post/687788…
浅拷贝与深拷贝
- 浅拷贝:仅仅是复制了引用,彼此之间的操作会互相影响。
- 深拷贝:在堆中重新分配内存,不同的地址,相同的值,互不影响。