Javascript 为什么不是';t数组的大小为7?
我有点困惑,为什么当史密斯被添加到列表中时,数组或对象的大小不被计算Javascript 为什么不是';t数组的大小为7?,javascript,Javascript,我有点困惑,为什么当史密斯被添加到列表中时,数组或对象的大小不被计算 var a = []; a[0] = 12; a[5] = "Lou"; a["Sue"] = "Smith"; console.log("a: ", a); console.log("length: ", a.length); Array.length属性只获取最后一个数字标识符并向其中添加一个 (如果数组是由数组构造函数构成的,则将长度分配给它,并将其传递给构造函数) 这里最后一个数字标识符是5,因此length将返回5
var a = [];
a[0] = 12;
a[5] = "Lou";
a["Sue"] = "Smith";
console.log("a: ", a);
console.log("length: ", a.length);
Array.length
属性只获取最后一个数字标识符并向其中添加一个
(如果数组是由数组
构造函数构成的,则将长度
分配给它,并将其传递给构造函数)
这里最后一个数字标识符是5
,因此length将返回5+1
,等于6
在JavaScript数组上设置属性时,当属性为
有效数组索引,且该索引超出
数组,引擎将相应地更新数组的长度属性
Array.length
属性只获取最后一个数字标识符并向其中添加一个
(如果数组是由数组
构造函数构成的,则将长度
分配给它,并将其传递给构造函数)
这里最后一个数字标识符是5
,因此length将返回5+1
,等于6
在JavaScript数组上设置属性时,当属性为
有效数组索引,且该索引超出
数组,引擎将相应地更新数组的长度属性
因为结果数组看起来像
[12, undefined, undefined, undefined, undefined, "Lou"]
我可以说得更多,它会有一个属性Sue
a.Sue // -> "Smith"
Object.keys(a) // -> ["0", "5", "Sue"]
您可以使用。获得更多详细信息,因为结果数组如下所示
[12, undefined, undefined, undefined, undefined, "Lou"]
我可以说得更多,它会有一个属性Sue
a.Sue // -> "Smith"
Object.keys(a) // -> ["0", "5", "Sue"]
您可以使用获得更多详细信息。它是6,0=12,1-4=未定义,5=Lou。索引为“Sue”的数组中没有元素。数组包含使用数字属性索引的项。当您使用
[“Sue”]
时,它只是将一个常规属性添加到对象中,而该对象不算作数组的一部分。嘿,为什么要进行向下投票。。这是一个很好的问题,应该被理解。它是6,0=12,1-4=未定义,5=Lou。索引为“Sue”的数组中没有元素。数组包含使用数字属性索引的项。当您使用[“Sue”]
时,它只是将一个常规属性添加到对象中,而该对象不算作数组的一部分。嘿,为什么要进行向下投票。。这是一个很好的问题,应该受到赞赏是的,OP就是这么问的。。虽然array
仍然是一个对象,并且它现在包含一个properta.Sue
为什么不将长度计算为6请注意,索引1到4处没有成员,但它们不存在。等效的数组文本是[12,,,,,,“Lou”]
。是的,这是OP要求的。。虽然array
仍然是一个对象,并且它现在包含一个properta.Sue
为什么不将长度计算为6请注意,索引1到4处没有成员,但它们不存在。等效的数组文字是[12,,,,,“Lou”]
。您是说空数组的“最后一个数字标识符”是-1
?:-)“如果为空,则始终为0”。不是这样。长度始终至少为最大索引+1。例如,var a=新数组(10)代码>。a、 长度为10,但没有成员(数组为“空”)。@RobG no。数组不是空的。它是[undefinedx10]
,有十个未定义的它是空的,没有成员,没有。例如,a.hasOwnProperty('1')
返回false。试图访问a[1]
时返回未定义,因为这是试图访问任何对象的不存在属性时得到的结果。@RobG arrayLength如果传递给数组构造函数的唯一参数是一个介于0和232-1(包括0和232-1)之间的整数,则返回一个长度设置为该数字的新JavaScript数组。如果参数是任何其他数字,则会引发RangeError异常。您是说空数组的“最后一个数字标识符”是-1
?:-)“如果为空,则始终为0”。不是这样。长度始终至少为最大索引+1。例如,var a=新数组(10)代码>。a、 长度为10,但没有成员(数组为“空”)。@RobG no。数组不是空的。它是[undefinedx10]
,有十个未定义的它是空的,没有成员,没有。例如,a.hasOwnProperty('1')
返回false。试图访问a[1]
时返回未定义,因为这是试图访问任何对象的不存在属性时得到的结果。@RobG arrayLength如果传递给数组构造函数的唯一参数是一个介于0和232-1(包括0和232-1)之间的整数,则返回一个长度设置为该数字的新JavaScript数组。如果参数是任何其他数字,则会引发RangeError异常。