2010-12-29 3 views
1

Что означает new Array(number) означает, а что означает new Array()? Например:Что означает `new Array (number)` означает при создании нового массива?

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"; 
+1

MDC - это хорошее место для поиска: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array – epascarello

ответ

4

Он предопределяет некоторое количество пустых (нулевых) записей массива. На мой взгляд, это бессмысленно и на самом деле вредная привычка.

Ваш код может быть гораздо симпатичнее, например:

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

Моя причина думать, что new Array(n) это плохая идея состоит в том, что установка конструктора массива имеет два режима:

new Array(22); 

означает создание экземпляра массива с 22 нулевыми записями, но

new Array(22, 23, 24); 

среднее значение s для создания экземпляра массива с записей. Это странно и странно, и на самом деле этого не следовало делать.

+0

В дополнение к этому, вызывая конструктор с несколькими элементами, например 'new Array (7,3) означает нечто совершенно иное. –

+0

@Felix да, я работал над примером, чтобы проиллюстрировать, но он немного вышел из-под контроля :-) – Pointy

+0

так что это не произойдет, если номер удален? – dramasea

1

var weekday = new Array (7); объявляет массив с 7 элементами в нем, как показано в следующих строках. Массив хранит значения по каждому индексу (номеру), и вы получаете доступ к значениям через переменную [#]

Это не нужно в javascript, но многие другие языки, такие как Java, требуют явного значения.

0

Ответ Pointy суммирует его совершенно. Просто чтобы добавить еще один вариант, вы можете сделать это следующим образом (если вы должны были сделать что-то в цикле, а не жестко прописывать его для примера):

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

номер - конструктор в массиве работает как емкость , но причина массивы - динамичны вы можете назначить:

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

также в JavaScript вы можете усечения и расширение массива, обновив свойство длины.

Я хочу рекомендовать вам прочитать JavaScript: окончательное руководство, пятое издание, глава 7: «Объекты и массивы». Вам нужно понять разницу между объектом, массивом и массивом.