Javascript中的数组长度

Javascript中的数组长度,javascript,arrays,Javascript,Arrays,我是编程和Javascript的绝对初学者,当时正在观看Douglas crockford的一个视频,他在视频中说: 与对象不同的数组具有特殊长度的成员 它总是比最高整数下标大1 在这个数组中 var a = [1,2,3,4,5,6,7] a、 长度等于7 所以我不太确定比最高整数下标大1意味着什么。。。?这只是来自旧版本Javascript的过时信息还是我遗漏了什么?数组是从0第一个元素索引的,但长度是从1一个元素数组的长度不会是-1如果没有元素,长度将是0;如果有2个元素,第二个元素的索

我是编程和Javascript的绝对初学者,当时正在观看Douglas crockford的一个视频,他在视频中说:

与对象不同的数组具有特殊长度的成员

它总是比最高整数下标大1

在这个数组中

var a = [1,2,3,4,5,6,7]
a、 长度等于7


所以我不太确定比最高整数下标大1意味着什么。。。?这只是来自旧版本Javascript的过时信息还是我遗漏了什么?

数组是从0第一个元素索引的,但长度是从1一个元素数组的长度不会是-1如果没有元素,长度将是0;如果有2个元素,第二个元素的索引将为1,长度将为2。

长度等于数组中的元素数,索引从0开始,请理解它,就像不是从1开始,而是从0开始,这样您将比元素总长度少1。所以

长度=总元素


最后一个索引=长度-1

这只是意味着数组的长度总是*其最大索引+1

考虑:

var a = [];
a[6] = 'foo';
console.log(a.length) //7
a[20] = 'bar';
console.log(a.length) //21

*实际上并不总是这样,例如,当您使用带有数字参数的数组构造函数:var a=new Array5时,数组是空的,但它的长度明确地设置为5,索引和长度是不同的。虽然JavaScript数组将从0开始,但长度始终是真实的数字。这很有用,因为在切片上,最后一个数字不包括在内

Javascript中的数组从0开始,因此在您的示例中,[0]是1,[6]是7。它不太容易与字符混淆:var abc=['a','b','c','d','e','f','g',其中abc[0]是a,abc[6]是g。数组的下标指的是它的索引。@JaredFarrish这是答案!如果不清楚的话,下标是[0]或[4]或[6]之类的索引。@user1313697然后做那些帮了忙的人,接受你最喜欢的。不是我的反对票,而是长度从零开始。给定var a=[],a的长度为零。@RobG这是一个特例。如ES5规范的15.4.2.2所述:如果参数len是一个数字,而ToUint32len等于len,则新构造对象的length属性设置为ToUint32len。所以这和里面的元素无关,它明确地设置了长度。然后更新了答案。