2017-10-20 111 views
-3
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

长度,当你 “搞定” 它没有计算。它只是数组的一个属性,在添加/删除项目或创建数组时更新。 – Cerbrus

+0

你希望* myArr [0]有什么价值? *为什么?* – David

回答

2

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

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

你期望'Hello'是在位置0或4?答案当然是4.数组的长度为5,即使索引0至3为空,索引4也有一个值。

作为每MDN文档,使用数组构造产生以下:

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

JavaScript Array

+1

'undefined'?不完全的。他们没有价值。 – Cerbrus

+0

@Cerbrus你是对的,会改变。谢谢。 –