简体   繁体   中英

Empty array with length different from zero. Can you explain me this?

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]

These lines create an array myArray that has a length of 5, but it's also said "an empty array", in fact myArr[0] is undefined , for example.

I can't understand how is possible to have an empty array with a length different from zero. If the array has not items, how can it have a length different from zero?

Positions in an array are still there even if they have no value, they are empty. Say you have the following code:

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

Do you expect 'Hello' to be in position 0 or 4? The answer is, of course, 4. The array has a length of 5, and even if indices 0 to 3 are empty, index 4 has a value.

As per MDN documentation, using the Array constructor yields the following:

If the only argument passed to the Array constructor is an integer between 0 and (2^32)-1 (inclusive), this returns a new JavaScript array with its length property set to that number ( Note: this implies an array of arrayLength empty slots, not slots with actual undefined values). If the argument is any other number, a RangeError exception is thrown.

JavaScript Array

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM