3

这三种创建数组的方式有什么区别吗?如果不是,如果前两种方法只是更多的代码,为什么还要存在呢?

1:

var myCars=new Array(); 
myCars[0]="Saab";       
myCars[1]="Volvo";
myCars[2]="BMW";

2:

var myCars=new Array("Saab","Volvo","BMW");

3:

var myCars=["Saab","Volvo","BMW"];
4

3 回答 3

6

使用[]比使用更安全可靠new Array()。前者实际上是推荐的。这是因为 的值Array可以被覆盖。此外,[]与 相比,速度更快new Array()

看看这些相关的问题:

相关链接:

为了阐明“覆盖”的含义,您可以执行以下操作:

function Array() {
    alert("I am not really an array! BWAHAHAHAHAHA!");
}

现在,当您这样做时,new Array();您会收到警报,这显然不是您想要的。

简而言之,确实没有迫切需要使用new Array(),与使用文字相比,它不会给你带来任何好处[]

于 2013-03-12T18:10:04.997 回答
1

区别:

在第一种方法中,数组声明和数组初始化是分开完成的。在第 2 和第 3 方法中,数组声明和数组初始化在单个语句中完成。3rd 只是 2nd 方法的简写。

需要:

案例1:假设你今天没有车,但你打算将来买一辆。所以,

var myCars = new Array();

案例 2:假设您今天拥有 2 辆汽车。但是将来,您可能会购买/出售一辆或多辆汽车。

var myCars = new Array("BMW", "Porsche");

总而言之,如果您事先知道数据,则使用第 2 或第 3 方法,但如果您事先不知道数据,则使用第 1 方法。

于 2013-03-12T18:17:45.140 回答
0

对于数组,这两种方法之间没有显着差异,除了可读性和简单表示法的非常轻微的性能优势。

然而,一般推荐的做法是尽可能对 javascript 使用普通表示法,而不是将这些东西包装在构造函数中。因为虽然 'new Array()' 和 'new Object()' 产生与[]and相同的结果{},但对原语使用构造函数实际上会导致问题。

例如new String(),将创建一个 String 对象而不是原始字符串。这具有阻止对===字符串使用和其他比较的缺点。

例如

 alert(new String("") === new String("")); //false alert ("" === "")
 //true

因此,虽然在这种特殊情况下没有区别,但通常最好养成使用基本符号的习惯,而不是使用内置类型的构造函数。

澄清

当我说没有区别时,我的意思是在一般情况下,这些符号会产生相同的结果。Vivin 的观点非常出色,也是避免使用这种符号的另一个原因。

于 2013-03-12T18:16:13.543 回答