Javascript数组的内存分配?

Chr*_*ell 1 javascript memory

如果我向 Javascript 数组的第 1000 个元素添加一个值,那么假设这些仓位是开放的,那么将该值添加到第 0 个元素有什么区别吗?

我说的是内存消耗。

例子:

arr[1000] = 'asdf';
Run Code Online (Sandbox Code Playgroud)

相对

arr[0] = 'asdf';
Run Code Online (Sandbox Code Playgroud)

Dev*_* H. 5

由于 JavaScript 数组实际上是对象,因此内存不是连续的。因此,根据您的示例,在array[1000]不存储任何内容的情况下进行访问将占用与您存储的内容相同的内存量(不是 1000 * 值的大小)。

事实上,var arr = new Array(1000);按照丹尼的答案做并不会创建一个包含 1000 个空槽的数组。length它创建一个具有value 属性的数组1000

这样想:如果 JavaScript 不知道所存储内容的类型和大小,它如何知道要预留多少内存?

例如:

var arr = [];
arr[1000] = 'String value';
Run Code Online (Sandbox Code Playgroud)

什么意思是说我无法在另一个索引处存储整数?

arr[0] = 2;
Run Code Online (Sandbox Code Playgroud)

来源: https ://stackoverflow.com/a/20323491/2506594