为什么Array.length返回的数字大于实际的最高数组索引?javascript不是从0开始计数吗?

Luk*_*vic -1 javascript higher-order-functions

作为Array类型实例的对象的length属性设置或返回该数组中元素的数量。该值是一个无符号的32位整数,在数值上总是大于数组中的最高索引。

let array = [1, 2, 3];
console.log(array.length);
Run Code Online (Sandbox Code Playgroud)

输出= 3

Mat*_*len 5

第一个元素的索引为0。长度为元素的数量。计数和索引无关。如果索引从99开始但只有四个元素,则长度将不是103,而是4。同样,第一个索引是-66,并且只有6个元素,所以列表的长度将不是-60个元素。

我同意这可能会造成混淆。也许将索引视为名称*。因此,数组中的每个位置都有一个名称。为了我们的方便,名称与每个元素在数组中的位置有关。

位置从0开始计数,但是元素数从1开始计数,就像玛丽在评论中所说。


*事实上,在javascript中,它们是名称,因为所有索引也是属性。

  • 长度和索引是完全独立的概念。“长度”是集合中的项数,从一个开始。最后一个索引是“长度-1” (2认同)