填充。
创建数组的更好方法是使用数组字面量初始化。
const array = ['a', 'b', 'c'];
// PACKED_ELEMENTS
如果不能提前知道所有值,可创建一个空数组,然后push将值添加到它。
const array = [];
array.push(someValue);
array.push(someOtherValue);
这种方法可确保数组永远不会转换为空洞数组。
因此,V8 可以潜在地为这个数组上的一些操作生成更快的优化代码。
六.总结
空洞数组: 预先分配容量,但数组操作相对较慢,因要处理额外的空洞逻辑
密集数组: 无空洞,但初始化需付出多次扩容代码。长度为9001的数组,初始化时需扩容16次。
翻译 Elements kinds in V8