0

可能重复:
在 Javascript 中声明数组时要遵循的最佳实践是什么?

在使用[]定义变量之后不要使用 new Array 是否正确?

var v = [];
v = Array(5); // is new necessary?
4

7 回答 7

0

第一行创建一个空数组。

第二个创建一个包含 5 个元素的数组,所有元素都具有 value undefined

两者都用是没有意义的。使用哪一种取决于您要做什么,但在实践中并不经常遇到第二种形式。第一个很可能就是您所需要的。

于 2012-10-24T10:36:53.293 回答
0

您正在将 v 的值从长度为零的数组重新分配给长度为 5 的数组。这使得该=[]部分变得多余。

编辑:

这里的主要区别是可以修改 Array 构造函数的原型,因此最终得到的不一定与标准问题 javascript Array 相同。

当你使用 [] 赋值时,使用了一个内部构造函数,这意味着数组原型篡改不会影响你的新对象。例如,当您尝试调用 join 方法时,我可以设置Array.prototype.join=function(){alert("duh");}并且您构建使用的所有数组都会警告“duh”。new Array(...)使用分配的数组[]不受此影响。

于 2012-10-24T10:38:33.830 回答
0

不,没有必要,因为两者都做同样的事情。基本上你应该做的是:

var v=[];  or var v=[value1, value2 ...];

定义数组的第二个版本有一些问题,例如:

Array(4)==> 创建一个空的 4 元素数组

Array(4,5)==> 创建一个包含 2 个元素(4 和 5)的数组

因此,如果您想创建一个 1 元素数组,它会在您的脸上爆炸。因此,建议使用第一个版本。

于 2012-10-24T10:39:17.137 回答
0

Array简单的答案是,在声明中使用关键字几乎没有充分的理由,无论是:

var a = Array(n)

或者

var a = new Array(n)

只需使用:

var a = [];

反而。

https://stackoverflow.com/a/11500550/6782

于 2012-10-24T10:42:12.967 回答
0

不必new与 Array 一起使用,我认为您可以在不使用new运算符的情况下创建 Array

于 2012-10-24T10:49:32.660 回答
0

您正在创建两个Array对象并丢弃一个,因此您所做的事情是不必要的。

声明变量并创建一个数组:

var v;
v = new Array(5);

或者作为一个单一的陈述:

var v = new Array(5);

创建数组的首选方法是new Array在您想要指定大小时使用,当您想要从项目创建数组时使用数组文字:

var a1 = new Array(42); // creates an array with 42 undefined items
var a2 = [1, 2, 3]; // creates an array with the 3 items

对于零大小的数组,您可以使用:

var a1 = new Array(); // creates an empty array
var a2 = []; // creates an empty array

构造Array函数也可以获取项目列表,但应该避免使用,因为如果有一个项目并且该项目是数字的,它的行为会有所不同:

var a1 = new Array(100, 101, 102); // creates an array with three items
var a2 = new Array(100, 101); // creates an array with two items
var a3 = new Array(100); // creates an array with 100 undefined items
于 2012-10-24T11:06:49.447 回答
-1

JavaScript - 与大多数语言不同 - 为您提供在需要时自我扩展的数组。但这并不意味着它没有成本。

如果你有一个长度为 N 的数组并在索引 M >= N 处放置一些东西,它必须创建一个长度为 M - 1 的新数组,将 N 中的所有内容复制到其中,然后添加你的元素,这很慢。 请注意,JavaScript 有非常多样化的实现,有些人只是将数组视为具有特殊长度属性的普通对象。

因此,为避免这种情况,当您知道数组的大小但不知道它将包含什么时,您可以使用new Array( size ). 如果您知道它将包含什么,最好使用 litteral notation [ item1, item2 ]。如果你真的不知道,就放[].

添加

于 2012-10-24T10:42:08.130 回答