创建新数组时“新数组(数字)”是什么意思?

时间:2010-12-29 14:42:30

标签: javascript arrays numbers new-operator

new Array(number)是什么意思,new Array()是什么意思?例如:

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

4 个答案:

答案 0 :(得分:4)

在以前的日子里,一些浏览器会预先分配一些空的(undefined)数组条目。在我看来,这是毫无意义的,实际上是一种坏习惯,即使现在还没有发生。它只是一个奇怪的API,奇怪的是bug发射器。

您的代码可能更漂亮,例如:

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

我认为new Array(n)是个坏主意的原因是Array构造函数的设置有两种模式:

new Array(22);

表示创建一个包含22个空条目的Array实例,但

new Array(22, 23, 24);

表示使用 3 条目创建数组实例。它令人困惑和奇怪,真的不应该这样做。

答案 1 :(得分:1)

在 var weekday = new Array(7); 正在声明一个包含7个项目的数组,如下面的行所示。数组存储每个索引(数字)的值,您可以通过变量[#]

访问这些值

您在javascript中不需要它,但许多其他语言(如Java)需要显式值。

答案 2 :(得分: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");

答案 3 :(得分: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中,您可以通过更新length属性来截断和放大数组。

我建议您阅读JavaScript:The Definitive Guide,第5版,第7章:“对象和数组”。您需要了解对象,数组,类似数组的对象之间的区别。