哪个内存更少:Javascript数组或Javascript对象?

Mat*_*chu 16 javascript

如果我有一个只有数字键的Javascript列表,这会占用更少的内存?

var array = [];
array[0] = 'hello';
array[5] = 'world';
array[50] = 'foobar';

var obj = {};
obj[0] = 'hello';
obj[5] = 'world';
obj[50] = 'foobar';
Run Code Online (Sandbox Code Playgroud)

我不知道Javascript引擎的内部结构,所以......

我问的原因是因为该数组在转换为字符串时会在其中间有一堆未定义的数组.那些实际上是以某种方式存储的,还是只是在字符串转换中存储?

CMS*_*CMS 13

数组基本上是与单个变量名相关联的有序值集.

在您的示例中,我认为您尝试执行关联数组,并且您应该使用object,Array不应该用于键/值对.

当您为具有更高当前数组长度的索引分配值时,数组长度也会间接增加:

var array = new Array();
array[99] = "Test";
// array.length is now 100
Run Code Online (Sandbox Code Playgroud)

查看有关此主题的详细文章.