我们知道对象存储在堆区域中。
假设我们在一个函数 block 内声明:
var a=[1,2]
和
var b=new Array(1,2)
这两个数组对象将存储在堆上还是 a
堆栈区域有空间并且将 b
在堆上?
最佳答案
无论您使用数组初始值设定项(又名“数组文字”,[1, 2]
)还是 Array
创建数组,数组的存储位置都没有区别> 构造函数 (new Array(1, 2)
)。
关于数组的存储位置:
这取决于 JavaScript 引擎的实现,因此不同的实现可能会有所不同。
一些高级引擎使用转义分析来确定在何处分配对象(包括数组),这意味着它们可能会分配在堆栈上,也可能会分配在堆上,具体取决于引擎是否发现它们是函数本地的或者它们转义函数(例如,通过返回或分配给函数关闭的变量等)。
旁注:几乎没有任何理由使用new Array
。
关于javascript - JavaScript 中数组存储在内存中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55304740/