长度不同于零的空数组。你能解释一下这个吗?

时间:2017-10-20 11:21:48

标签: javascript

var myNumb = 5;
var myArr = Array(myNumb);
console.log(myArr.length); // 5
console.log(myArr[0]) // undefined, as well as for myArr[1] myArr[2] myArr[3] myArr[4]

这些行创建一个长度为5的数组myArray,但它也称为“空数组”,例如myArr[0]undefined

我无法理解如何有一个长度不等于零的空数组。如果数组没有项目,它的长度如何不等于零?

1 个答案:

答案 0 :(得分:2)

数组中的位置仍然存在,即使它们没有值,它们也是空的。假设您有以下代码:

var myArray = new Array(5);
myArray[4] = 'Hello';

您希望'Hello'位于0或4位吗?答案当然是4.数组的长度为5,即使索引0到3为空,索引4也有一个值。

根据MDN文档,使用Array构造函数会产生以下结果:

  

如果传递给Array构造函数的唯一参数是整数   在0和(2 ^ 32)-1(包括)之间,这将返回一个新的JavaScript数组   将其长度属性设置为该数字(注意:这意味着一个   arrayLength个空插槽的数组,而不是实际未定义的插槽   值)。如果参数是任何其他数字,则为RangeError例外   扔了。

JavaScript Array