用Javascript将数组存储在内存中的什么位置?

时间:2019-03-22 17:15:51

标签: javascript arrays stack heap

我们知道对象存储在堆区域中。

假设我们在声明的功能块中:

var a=[1,2] 

还有

var b=new Array(1,2)

两个数组对象都将存储在堆中还是a在堆栈区域中有空间并且b是否在堆中?

1 个答案:

答案 0 :(得分:1)

无论使用数组初始化程序(也称为“数组文字”,[1, 2])还是Array构造函数(new Array(1, 2))创建数组,存储位置都没有关系。

关于数组的存储位置:

这取决于JavaScript引擎的实现,因此因实现而异。

一些高级引擎使用 escape分析来确定将对象(包括数组)分配到哪里,这意味着它们可以分配在堆栈上,也可以分配在堆上,具体取决于引擎是否看到它们是该函数的局部变量,或者它们是对该函数的转义(例如,通过返回或分配给函数关闭的变量等)。


旁注:几乎没有任何理由使用new Array

相关问题