2010-07-27 96 views
2

可能重複:
What’s the difference between 「Array()」 and 「[]」 while declaring a JavaScript array?這些在javascript中定義數組的方法有什麼區別?

是什麼限定在JavaScript的陣列的這兩種方法之間的差異?

var arrayList = [] 

var arrayListAgain = new Array(); 
+3

重複? http://stackoverflow.com/questions/931872/whats-the-difference-between-array-and-while-declaring-a-javascript-arr – Anders 2010-07-27 21:44:16

+0

一個很漂亮,一個很醜。一個是數組文字,一個是創建一個新的數組對象。他們幾乎做同樣的事情......我從來沒有看到'新陣列(countOfUndefinedElements)'的使用;'雖然我猜會有一些。 – Warty 2010-07-27 21:58:58

+0

使用文字初始化'[]'是微不足道的速度;) – 2010-07-27 22:19:33

回答

4

一個是好的,另一個是壞:-)

沒有嚴重的是,第一種方式是短(更少的字節發送過來的電線)和它doesn」沒有任何奇怪的潛在問題。然而,第二個將會正常工作。

new Array()怪異的一部分是這樣的:如果傳遞一個數值參數給構造,它的意思是「初始化數組,以便有存在空的(null)數組元素的給定數目,因此length等於給定的數字。「 (好吧,它必須是一個整數,我想實際上。)如果你傳遞一個非數字或兩個或多個數字,它意味着「初始化數組,使其內容反映這個參數列表。」如果你使用某種服務器端框架,並且你想創建一個數值(整數值)數組,比如說唯一的數據庫鍵,那麼你可能會這樣做:

var keys = new Array(< @ favoriteTemplateLanguage.forEach(idList):print(id +',')@>);

(我當然構成了這個語法。)現在如果服務器端的密鑰列表中只有一個「id」會發生什麼?

+0

是不要過度工作的電線! – 2010-07-27 21:43:41

+0

..所以哪一個是好的,哪個是壞的?看起來你讚美了兩個...... – Hristo 2010-07-27 21:43:41

+0

我在開玩笑說「壞」的部分,但在我看來,第一個符號([])是可取的,因爲它不太古怪。 – Pointy 2010-07-27 21:46:12

1

什麼都沒有。兩者都創建一個Array對象的新實例。

Douglas Crockford在'Javascript the good parts'中推薦使用前一種方法,因爲它更簡潔。

+0

Crockford也不鼓勵使用'++'和'--'作爲一些不起眼的原因...... – 2010-07-27 21:49:56

2

您可以使用第二個來定義預定義長度的數組,例如,

var arrayListAgain = new Array(20); 

將創建一個包含20個(未定義)元素的數組。

另請參閱new Array (len)

1

它們是一樣的。據http://www.hunlock.com/blogs/Mastering_Javascript_Arrays

當前的最佳實踐避開JavaScript的 原語 「新」的關鍵字。如果你想創建一個新的 陣列簡單地用括號[]像這樣 ... var myArray = [];

我建議你閱讀該網頁,它包含了很多的關於一般陣列和JS有用的信息。