javascript - JavaScript 中数组存储在内存中的什么位置?

标签 javascript arrays heap-memory stack-memory

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

假设我们在一个函数 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/

相关文章:

javascript - 自定义 AJAX dataType 类型

javascript - 如何在按下按钮时更新变量?

arrays - 将一个文本字段中的多个值存储到一个数组中

c - 有什么方法可以防止应用程序在堆损坏时崩溃? - C 编程语言

javascript - 无法使用 PhP 发送电子邮件

java - 有没有办法在java中截断字符串数组(不使用循环)并直接转换为整数?

javascript - 按下按钮后循环遍历整个数组

c++ - HeapAlloc 返回 0xC0000017 : Not Enough Quota

java - 交换过程中 native 内存不断增加

javascript - jquery 验证仅突出显示标签