猿问

这个数组长度如何等于 10?

抱歉,如果这是一个愚蠢的问题,我是编程新手,我就是不明白。


我知道数组索引为 0,但我仍然不明白这段代码如何给我 10。


var array = [];

array[3] = "Hello";

array[9] = "Goodbye";


console.log(array.length);


holdtom
浏览 144回答 2
2回答

慕盖茨4494581

见MDN:作为 Array 类型实例的对象的 length 属性设置或返回该数组中元素的数量。该值是一个无符号的 32 位整数,在数值上始终大于数组中的最高索引。对于这种情况,第一句话有点误导,但第二句话不是。数组对象具有的最大数组索引属性是 9,所以.length它是 10 (9 + 1)。你所拥有的是一个稀疏数组,但稀疏数组非常奇怪并且有许多不直观的行为(比如这个)——几乎在所有情况下都应该避免它们。为避免出现稀疏数组,在分配给数组的特定索引时,请确保它下面的每个数组索引也已分配一个值。(例如,不要分配给[2]除非[1]并且[0]也有分配给他们的值)如果您想将任意数字与数据相关联,但使用数组会导致它可能是稀疏的,那么请改用对象,例如const wordsByNumber = {  3: 'Hello',  9: 'Goodbye'};

30秒到达战场

var array = [];array[3] = "Hello";array[9] = "Goodbye";console.log(array.length);现在,您有了var array = [undefined, undefined, undefined, "Hello", undefined, undefined, undefined, undefined, undefined, "Goodbye"]这意味着您的数组中现在有 10 个值(其中大多数是未定义的,因为您跳过了索引)。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答