, buVar x = new Array(); JSLint yılında
var x = new Array();
(Bu gerçek bir değişken ismi değil)
var result = [];
1 sözdizimi nesi var olması gerektiği konusunda uyarıyor? Önerinin arkasındaki mantık nedir?
, buVar x = new Array(); JSLint yılında
var x = new Array();
(Bu gerçek bir değişken ismi değil)
var result = [];
1 sözdizimi nesi var olması gerektiği konusunda uyarıyor? Önerinin arkasındaki mantık nedir?
Crockford doesn't like new
. Bu nedenle, mümkün olduğunda JSLint expects you to avoid it. Ve yeni bir dizi nesnesi oluşturmak new
kullanmadan mümkündür ....
Ancak jslint sonları bir dizi başlatmak çalıştığınızda n değerleri ile.Örneğin: var x = yeni Array (20); Bu yaratma metodu sıklıkla kullanılmaz, ancak onun durumları vardır ve bir dizi oluşturmak ve doldurmak için bir döngü kullanmaktan çok daha hızlıdır. –
n'th elemanını undefined olarak ayarlayabilir ve az çok aynı şeyi yapar – mikelikespie
Bir diziyi bildirimde belirli bir boyuta getirmeye gerek yoktur. JavaScript dizileri C dizileri gibi değildir. Nesneler, statik boyutlar değil, bitişik bellek parçalarıdır. Bu nedenle, değerleri dizinize eklemeniz yeterlidir. Aslında deklarasyonda başlayabilmek için * daha yavaş * olabilir ve daha sonra doldurulur, çünkü bildirim zamanında, tüm n anahtarının karıĢtırılması gerekir, daha sonra atandığı değere göre, yeniden değerlendirilmeleri gerekebilir. –
O new Array()
kullanmaktır daha aslında JavaScript Array
değerini geçersiz kılabilir çünkü []
kullanmak daha güvenlidir: Başka bir deyişle
Array = function() { };
var x = new Array();
// x is now an Object instead of an Array.
, []
belirsiz değildir.
Bir örnek verebilir misiniz? – TStamper
İyi nokta! Array'ın geçersiz kılınmasının, kodda Array.prototype yöntemlerini argüman gibi dizi benzeri nesneler üzerinde kullanmaya çalışan ciddi sorunlara yol açacağını unutmayın. Bu yüzden hala çok kötü bir fikir. – Shog9
Sadece bu değil, Array() yapıcısında, ne kadar argüman geçtiğine bağlı olarak bazı "garip" davranışları vardır. Bu sadece ilginç ve en iyi kaçınılmaz. –
İlk sözdiziminde yanlış bir şey yok. Aslında, w3schools'da, bir dizi oluşturmanın yolu olarak new Array()
listelenir. Sorun şu ki bu "eski yol". "Yeni yol", []
daha kısadır ve ["foo", "bar"]
'da olduğu gibi dizideki değerleri başlatmanıza izin verir. Çoğu geliştirici []
'u new Array()
'a iyi stil açısından tercih eder.
Neden bu durum reddedildi? –
muhtemelen w3 okulları w3.org ile ilişkili olmadığından ve genellikle yanlış veya yanlış kodlara sahip olduklarından. –
@AndrewAustin True. İnterweb'lerde, genel bir kural olarak, bilgiyi nereden aldığınıza bakılmaksızın kaynakları iki kez kontrol etmelisiniz. Bilim için – Tivie
formu ya hiç bir sorun yok, ama mümkün-
var s = '' var s = new String() den daha doğru değil her yerde genellikle kullanılan değişmezleri bkz ....
Kullandığınız ve tarayıcınıza veya ortamınıza bağlı olarak farklı bir performans elde edebileceğiniz gibi görünüyor:
http://jsperf.com/new-array-vs-literal/11 ([1, .2] vs new Array (1, .2)) literal yoldur bu durumda daha hızlı. Yeni Dizi daha hızlı krom V21 ise ne yaptığın bağlı olarak) yaklaşık% 7 veya% 30 oranında bu test için görünüyor
http://jsperf.com/new-array-vs-literal/7 ([] .length (500000) vs yeni Array (500000)).
+1! –
+1, çünkü ölçütler genellikle bakış açısına bir şeyler koymaya yardımcı olur – Tivie
1. sözdiziminde yanlış bir şey yok. İkincisi sadece daha kısa. –