数组 - 长度不清楚

Arrays - Length.unclear

本文关键字:不清楚 数组      更新时间:2023-09-26

所以我有这段代码:

var box = [];
box[0] = "meow";
box[3] = {"babyBox" : true};

问题 : 为什么是框["长度"]; 将显示在控制台 4 而不是 2 中?我用盒子[10]换了盒子[3],我得到了11。对不起,如果这是一个菜鸟问题..但从我的角度来看,名为 Box 的数组只有 2 个元素。谢谢!

来自 Mozilla Developer Network 文档:

length 属性表示一个无符号的 32 位整数,即 在数值上始终大于数组中的最高索引。

因为您正在设置box[3],这告诉它数组有 4 (0,1,2,3) 个部分,即使您尚未为它们分配任何内容

每次将元素添加到数组中时,都会重新计算长度。

通过在超出数组长度的索引处分配项,会导致数组调整大小。未分配的索引成为数组中的漏洞

基本上,现在数组看起来像:

         0                     1                     2                     3
--------------------  --------------------  --------------------  -------------------- 
| "meow"           |  |                  |  |                  |  |{"babyBox" : true}|
--------------------  --------------------  --------------------  --------------------