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
。
我无法理解如何有一个长度不等于零的空数组。如果数组没有项目,它的长度如何不等于零?
答案 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
例外 扔了。