Bu tanımlamalar arasında büyük bir fark yoktur; ilk yöntem dizi/nesne değişmezini ve ikincisi dizi/nesne yapıcısını kullanır.
Dizi yapıcısı, iletilen argümanların sayısına bağlı olarak farklı sonuçlar döndürebilir. Bir bağımsız değişkeni iletirseniz, bu argümanın uzunluğundan yeni bir boş dizi oluşturulur. Aksi, çünkü
// arr3 has length 200 and is empty, while arr4 has length 1 and contains a number
var arr3 = new Array(200);
var arr4 = [200];
alert(arr3.length == arr4.length); // false
alert(arr3[0]); // 'undefined'
alert(arr4[0]); // 200
bir dizi ya da bir nesneyi tanımlamak için en hızlı bir şekilde tabii değişmez bir şekilde: Örneğin:
// arr1 is the same as arr2
var arr1 = new Array(1, 2, 3, 4);
var arr2 = [1, 2, 3, 4];
alert(arr1.length == arr2.length); // true
alert(arr1[0]); // 1
alert(arr2[0]); // 1
Ancak, farklı bir bağımsız değişken sonuçları geçen önce kurucuyu aramalıyım. Her neyse, gerçek hız farkı gerçekten ihmal edilebilir.
Average speed per 10000000 calls
Array Constructor : 226.55 ms
Array Literal : 159.1 ms
Gördüğünüz gibi, edebi dizi başına 67,45ms hızlıdır:
ben 20 kere 10000000 bu sonuçları verdi aynı dizi
1, 2, 3
, tanımlanmış olan Chrome 6'da bir
speed test yaptım 10000000 dizi tanımları.
İyi soru! Benim görüşüme göre, bir kod güzellik bakış açısından, 'yeni Array()' daha temiz görünüyor. Neyin peşinde olduğunu görmek istiyor. –
Önerilen dupe, nesnelerden bahsetmiyor. –