为什么不是数组7的大小?

时间:2014-12-11 08:33:35

标签: javascript

我有点困惑,为什么在将史密斯添加到列表中时,不计算数组或对象的大小...?

var a = [];
a[0] = 12;
a[5] = "Lou";
a["Sue"] = "Smith";
console.log("a: ", a);
console.log("length: ", a.length);

2 个答案:

答案 0 :(得分:3)

Array.length属性只取最后一个数字标识符并添加一个

(如果数组由Array构造函数构成,它将为其分配length,并将其传递给构造函数)。

所以,这里最后一个数字标识符为5,因此长度将返回5 + 1,等于6。

MDN

  

当属性为a时,在JavaScript数组上设置属性   有效的数组索引,该索引超出了当前的范围   数组,引擎将相应地更新数组的长度属性

答案 1 :(得分:3)

因为结果数组看起来像

[12, undefined, undefined, undefined, undefined, "Lou"]

我可以说更多,它会有一个属性Sue

a.Sue // -> "Smith"
Object.keys(a) // -> ["0", "5", "Sue"]

您可以使用this article获取更多详细信息。