2010-08-17 69 views

回答

15

是的,這種情況下它們是一樣的。

如果您只有一個項目,並且它是數字,則存在差異。這將創建一個陣列中的單個項目:

var myNumbers = [42]; 

但是這會創建一個數組,長度42:

var myNumbers = new Array(42); 
+0

+1。尼斯:) ... – 2010-08-17 07:19:23

+4

第二個例子不會真的有'42'項目,只有它的'length'將會是'42'。從'0'到'41'的屬性不存在於對象中,例如:'new Array(42).hasOwnProperty('0'); // false「。 – CMS 2010-08-17 07:20:54

+0

@CMS:是的,你說得對。 Javascript中的數組有點特別......我調整了答案。 – Guffa 2010-08-17 07:24:41

4

是的,它們是一樣的。沒有原始形式的數組,因爲JavaScript中的數組始終是對象。第一種符號(new Array構造函數語法)在JavaScript早期被大量使用,後者的短符號不被很好地支持。

注意,有一個行爲區別:如果你通過一個單一的,數值參數new Array,像new Array(20),它會返回一個新的數組預先初始化與許多元素0n - 1,設置爲undefined

+0

以及它是如何有用?我指的是你的第二段 – Xsmael 2017-09-16 16:54:20

4

是的,他們。但是請注意,當您僅將一個數字參數傳遞給Array構造函數時,您將指定數組的初始值length,而不是第一項的值。因此:

var myCars1 = new Array(10); 

...的行爲不同於以下數組文本:

var myCars2 = [10]; 

...注意以下幾點:

console.log(myCars1[0]);   // returns undefined 
console.log(myCars1.length);  // returns 10 
console.log(myCars2[0]);   // returns 10 
console.log(myCars2.length);  // returns 1 

這就是爲什麼它往往是建議堅持數組文字符號:var x = []

相關問題