例如:
array1 = new Array(5); array2 = new Array(10);
console.log(array1)
和 console.log(array2)
都会返回 []
。
那么这里arrayLength的作用是什么?
最佳答案
JavaScript 隐藏了许多您在使用许多其他语言的数组时通常必须处理的细节。例如,JavaScript 中的数组可以在您向其推送值时自动增长。
然而,在幕后,运行时仍在处理 C 或 Java 等语言让开发人员可见的内存分配问题。运行时可能会留出一些额外的内存供数组增长,然后一旦它用完了连续的内存空间,它就会在其他地方重新分配一 block 更大的内存,并从第一组内存中复制所有值到另一个位置。
(这大大简化了事情,但希望您能理解总体思路。)
如果您提前确切知道可以将多少项放入数组中,使用 new Array(number)
将向运行时提示它可以从分配那么多内存开始,并避免随着内存的增长而重新分配和复制内存。
在这种情况下,例如,this page建议采用以下做法以在 V8 javascript 引擎中实现最佳性能:
- 不要预先分配大数组(例如 > 64K 元素)到它们的最大大小,而是随着你的增长而增长
- 为固定大小的小数组使用数组文字进行初始化
- 在使用前预先分配小数组 (<64k) 以修正大小
关于javascript - 为什么要在 "new Array(arrayLength)"中设置 arrayLength?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30224943/