js的堆和栈

参考文章:html

浅析JS中的堆内存与栈内存java

定义

在js引擎中对变量的存储主要有两种位置,堆内存和栈内存。指针

和java中对内存的处理相似,栈内存主要用于存储各类基本类型的变量,包括Boolean、Number、String、Undefined、Null,**以及对象变量的指针,这时候栈内存给人的感受就像一个线性排列的空间,每一个小单元大小基本相等。cdn

而堆内存主要负责像对象Object这种变量类型的存储htm

栈内存中的变量通常都是已知大小或者有范围上限的,算做一种简单存储。对象

而堆内存存储的对象类型数据对于大小这方面,通常都是未知的。我的认为,这也是为何null做为一个object类型的变量却存储在栈内存中的缘由blog

所以当咱们定义一个const对象的时候,咱们说的常量实际上是指针,就是const对象对应的堆内存指向是不变的,可是堆内存中的数据自己的大小或者属性是可变的。而对于const定义的基础变量而言,这个值就至关于const对象的指针,是不可变内存

咱们常说的值类型和引用类型其实说的就是栈内存变量和堆内存变量,再想一想值传递和引用传递、深拷贝和浅拷贝,都是围绕堆栈内存展开的,一个是处理值,一个是处理指针get

相关文章
相关标签/搜索