可能重复:
What are the best practices to follow when declaring an array in Javascript?
使用 [] 定义变量后,不使用新数组是否正确?
var v = [];
v = Array(5); // is new necessary?
答案 0 :(得分:0)
第一行创建一个空数组。
第二个创建一个包含5个元素的数组,所有元素都具有值undefined
。
使用两者 是没有意义的。使用哪一个取决于你想要做什么,但在实践中不经常遇到第二种形式。很可能第一个就是你需要的全部。
答案 1 :(得分:0)
您将v的值从零长度数组重新分配给长度为5的数组。这会使=[]
部分变为冗余。
编辑:
这里的主要区别是可以修改Array构造函数的原型,因此最终得到的结果不一定与标准问题javascript数组相同。
使用[]分配时,使用内部构造函数,这意味着数组原型篡改不会影响新对象。例如,我可以设置Array.prototype.join=function(){alert("duh");}
,当您尝试调用join方法时,使用new Array(...)
构造的所有数组都将提醒“duh”。使用[]
分配的数组对此免疫。
答案 2 :(得分:0)
不,没有必要,因为两者都做同样的事情。基本上你应该做的就是:
var v=[]; or var v=[value1, value2 ...];
定义数组的第二个版本有一些问题,如:
Array(4)
==>创建一个空的4元素数组
Array(4,5)
==>创建一个包含2个元素(4和5)的数组
因此,如果你想创建一个1元素数组,它会在你脸上爆炸。因此,建议使用第一个版本。
答案 3 :(得分:0)
简单的答案是,在声明中使用Array
关键字几乎没有充分理由,无论是:
var a = Array(n)
或
var a = new Array(n)
只需使用:
var a = [];
代替。
答案 4 :(得分:0)
没有必要将new
与Array一起使用,我认为你可以在不使用new
运算符的情况下创建数组
答案 5 :(得分: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
答案 6 :(得分:-1)
JavaScript - 与大多数语言不同 - 为您提供在需要时自我扩展的数组。但这并不意味着它没有成本。
如果你有一个长度为N的数组并且在索引M> = N处放置一些东西,它必须创建一个长度为M-1的新数组,将N中的所有内容复制到其中然后添加你的元素,那很慢。 请注意,JavaScript具有非常多样化的实现,有些人只是将数组视为具有特殊长度属性的普通对象。
为了避免这种情况,当您知道数组的大小而不是它的大小时,您可以使用new Array( size )
。如果你知道它将包含什么,最好使用文字符号[ item1, item2 ]
。如果你真的不知道,只需要[]
。
<强>加入强>