2009-05-19 78 views
36

在JSLint的,它警告說,var x = new Array();

var x = new Array(); 

(這是不是一個真正的變量名)應該是

var result = []; 

有什麼不對的第一語法?建議背後的推理是什麼?

+2

第1個語法沒有錯。第二個簡短。 – 2009-05-19 21:40:47

回答

69

它的安全使用[]比它要使用new Array(),因爲你實際上可以在JavaScript覆蓋的Array值:

Array = function() { }; 

var x = new Array(); 
// x is now an Object instead of an Array. 

換句話說,[]是毫不含糊的。

+0

你能舉個例子嗎? – TStamper 2009-05-19 21:50:23

+0

好點!請注意,重寫數組也會導致代碼中的嚴重問題,這些代碼會嘗試對類似數組的對象(如參數)使用Array.prototype方法...因此,這仍然是一個非常糟糕的主意。 – Shog9 2009-05-19 21:51:47

+2

不僅如此,Array()構造函數還有一些「奇怪」的行爲,具體取決於你傳遞了多少個參數。這只是一般古怪,最好避免。 – 2009-05-19 22:49:20

2

第一種語法本身沒有任何問題。實際上,在w3schools上,它列出new Array()作爲創建數組的方式。問題是這是「老路」。 「新方法」[]較短,並允許您初始化數組中的值,如["foo", "bar"]。在良好風格方面,大多數開發者更喜歡[]new Array()

4

沒有錯,無論是形式,但大家平時看到的使用文字的地方possible-

變種S = '' 不大於變種S =新的String()正確....

相關問題