我们知道对象存储在堆区域中。
假设我们在一个功能块内,我们在其中声明:
var a=[1,2]
和
var b=new Array(1,2)
两个数组对象都存储在堆上,还是a
堆栈区域中有空间,b
堆上?
无论您使用数组初始值设定项(又名"数组文字",[1, 2]
(还是Array
构造函数(new Array(1, 2)
(创建数组,数组的存储位置都没有区别。
重新存储阵列的位置:
这取决于 JavaScript 引擎的实现,因此可能因实现而异。
一些高级引擎使用转义分析来确定在哪里分配对象,包括数组,这意味着它们可以在堆栈上分配,也可以在堆上分配,这取决于引擎是否看到它们是函数的本地还是它们转义函数(例如,通过返回,或分配给函数关闭的变量, 等(。
旁注:几乎没有任何理由使用new Array
。