这三种创建阵列的方法有什么区别吗?如果没有,为什么前两种方法存在,如果它们只是更多的代码?
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"];
答案 0 :(得分:5)
使用[]
比使用new Array()
更安全可靠。前者实际上是推荐的。这是因为可以覆盖Array
的值。另外,[]
is faster compared to new Array()
。
看看这些相关问题:
相关链接:
为了澄清“被覆盖”意味着什么,你可以这样做:
function Array() {
alert("I am not really an array! BWAHAHAHAHAHA!");
}
现在,当您new Array();
时,您会收到警报,这显然不是您想要的。
简而言之,确实没有迫切需要使用new Array()
,与使用文字[]
相比,它不会给你带来更多的东西。
答案 1 :(得分:1)
<强>差:强>
在第一种方法中,数组声明和数组初始化是分开进行的。在第二和第三种方法中,数组声明和数组初始化在单个语句中完成。第三种只是第二种方法的简写。
需要:强>
案例1:假设你今天没有车,但你打算在将来买一辆车。所以,
var myCars = new Array();
案例2:假设你今天拥有2辆汽车。但将来,您可能会购买/出售一辆或多辆汽车。
var myCars = new Array("BMW", "Porsche");
总而言之,如果您事先知道数据,则使用第二或第三种方法但如果您事先不知道数据,则使用第一种方法。
答案 2 :(得分:0)
对于数组,除了可读性和普通符号的非常轻微的性能优势之外,两种方法之间没有显着差异。
但是,一般建议的做法是尽可能使用普通符号来表示javascript,而不是将这些内容包装在构造函数中。因为'new Array()'和'new Object()'与[]
和{}
生成相同,所以使用基元的构造函数实际上可能会导致问题。
例如new String()
将创建一个String对象而不是一个原始字符串。这样做的缺点是无法在字符串上使用===
和其他比较。
例如
alert(new String("") === new String("")); //false alert ("" === "")
//true
因此虽然在这种特殊情况下没有区别,但总的来说,习惯使用基本符号而不是使用内置类型的构造函数会更好。
当我说没有区别时,我的意思是在一般情况下,这些符号会产生相同的结果。 Vivin的观点非常出色,是避免这种表示法的另一个原因。