admin管理员组

文章数量:1400533

What does new Array(number) mean, and what does new Array() mean? For example:

var weekday=new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";

What does new Array(number) mean, and what does new Array() mean? For example:

var weekday=new Array(7);
weekday[0]="Sunday";
weekday[1]="Monday";
weekday[2]="Tuesday";
weekday[3]="Wednesday";
weekday[4]="Thursday";
weekday[5]="Friday";
weekday[6]="Saturday";
Share Improve this question edited Jul 27, 2012 at 15:03 Matt Fenwick 49.1k24 gold badges129 silver badges198 bronze badges asked Dec 29, 2010 at 14:42 dramaseadramasea 3,50217 gold badges53 silver badges77 bronze badges 1
  • 1 MDC is a good place to look: developer.mozilla/en/JavaScript/Reference/Global_Objects/… – epascarello Commented Dec 29, 2010 at 15:24
Add a ment  | 

4 Answers 4

Reset to default 4

In days of yore, some browsers would pre-allocate some number of empty (undefined) array entries. In my opinion, it's pointless and in fact a bad habit even though that doesn't happen now. It's just a weird API and weird things are bug launchers.

Your code could be much prettier, for example:

var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];

My reason for thinking that new Array(n) is a bad idea is that the setup of the Array constructor has two modes:

new Array(22);

means to create an Array instance with 22 null entries, but

new Array(22, 23, 24);

means to create an Array instance with 3 entries. It's confusing and weird, and really shouldn't have been done that way.

The var weekday = new Array( 7 ); is declaring an array with 7 items in it, as shown by the following lines. The array stores values at each index( number ) and you access the values via variable[#]

You do not need it in javascript but many other languages such as Java require an explicit value.

Pointy's answer sums it up perfectly. Just to add another alternative, you could do it like this (if you were to do something in a loop rather than hardcoding it for example):

var weekday = [];
weekday.push("Sunday");
weekday.push("Monday");
weekday.push("Tuesday");
weekday.push("Wednesday");
weekday.push("Thursday");
weekday.push("Friday");
weekday.push("Saturday");
var sevenElementsArray = new Array(7);
var emtpryArray1 = new Array();
var emtpryArray2 = [];

the number - constructor in an array works as capacity, but cause arrays - are dynamic you may assign:

alert(sevenElementsArray.length); //shows 7
sevenElementsArray[20] = "it's OK";
alert(sevenElementsArray.length); //shows 20
alert(sevenElementsArray[15]); //shows undefined;

also in JavaScript you may truncating and enlarging an array by updating the length property.

I wish to remend you to read JavaScript: The Definitive Guide, 5th Edition, the chapter 7: "Objects and Arrays". You need to understand difference between object, array, array-like object.

本文标签: javascriptWhat does new Array(number) mean when creating a new arrayStack Overflow