我有点困惑,为什么在将史密斯添加到列表中时,不计算数组或对象的大小...?
var a = [];
a[0] = 12;
a[5] = "Lou";
a["Sue"] = "Smith";
console.log("a: ", a);
console.log("length: ", a.length);
答案 0 :(得分:3)
Array.length
属性只取最后一个数字标识符并添加一个
(如果数组由Array
构造函数构成,它将为其分配length
,并将其传递给构造函数)。
所以,这里最后一个数字标识符为5
,因此长度将返回5 + 1
,等于6。
当属性为a时,在JavaScript数组上设置属性 有效的数组索引,该索引超出了当前的范围 数组,引擎将相应地更新数组的长度属性
答案 1 :(得分:3)
因为结果数组看起来像
[12, undefined, undefined, undefined, undefined, "Lou"]
我可以说更多,它会有一个属性Sue
a.Sue // -> "Smith"
Object.keys(a) // -> ["0", "5", "Sue"]
您可以使用this article获取更多详细信息。