2016-03-28 39 views
3

This MDN page iddialar:Yineleme

... Kullandığınız bir dizi adımlayabilirsiniz şunlardır:

kez her length özelliğini kadar aradığınız gibi bu biraz verimsizdir
for (var i = 0; i < a.length; i++) { 
    // Do something with a[i] 
} 

döngü.

for (var i = 0, len = a.length; i < len; i++) { 
    // Do something with a[i] 
} 

A-güzel görünümlü ama sınırlı deyim geçerli:: Bir gelişme şudur

for (var i = 0, item; item = a[i++];) { 
    // Do something with item 
} 

tekrarlamanın bunlar gerçekten yaygın olarak kabul edilen yolları var mı? Modern JavaScript motorları sadece ilkini optimize etmez miydi?

+3

* Modern JavaScript motorları sadece birinciyi optimize etmez miydi? * Evet, isterlerdi. MDN sayfası yanlış. MDN'nin benim gibi düzenli insanlar tarafından yazıldığını unutmayın. Bu arada, son parça korkunç, çünkü herhangi bir falsi olmayan dizi elemanında döngüyü durduracak. MDN sayfasını düzelttim. –

+2

Genel bir kural olarak, garip şeyler yapmayın çünkü daha hızlılar. Açık kod yaz. Derleyici yazarları, açık kodun daha hızlı olması için daha fazla zaman harcayacak ve bakım geliştiricileri ne yapmaya çalıştığınızı daha kolay anlayacaktır. Bunu kanıtlayabildiğiniz zaman sadece tuhaf bükülme yapın * fark edilebilir * daha hızlı * kullanıcı *, ölçülebilir * daha hızlı bir şekilde bazı kıyaslama testlerine. –

+0

Tabii ki; Kafam karışmıştı çünkü MDN'nin yetkili bir kaynak olduğunu ve birçok örnekte ikinci yöntemi kullandığını farz ettim. –

cevap

1

MDN sayfası yanlış. Modern motorlar , uzunluğun kullanımını optimize edecek şekilde olacaktır. Aslında, bazı motorlar aslında ilk parçayı daha hızlı çalıştıracaktır.