var arr = [];
arr[50] = 'foo';
arr[10000] = 'boo';
答案 0 :(得分:4)
取决于实施。这样:
arr=[]
arr[1000]=1
arr[1000000000]=2
arr.sort()
将在Chrome上提供[1,2]
(不再需要使用两个元素对密集数组进行排序),但Firefox上出现allocation size overflow
错误。
答案 1 :(得分:2)
完全没有害处。请确保在使用之前测试该值是否已定义。
答案 2 :(得分:2)
考虑使用“键/值数组”来处理这样的事情:
var arr = {};
arr[50] = 'foo';
arr[10000] = 'boo';
这样你就失去了检测数组长度的能力(arr.length将是未定义的),你可以使用不同类型的循环迭代它,但如果你不需要任何这些IMO,那就更好了。
答案 3 :(得分:1)
没有。大多数JavaScript实现将分配两个插槽(即,该数组将分配相同数量的内存,就好像它只有两个带有索引0
和1
的元素一样。)