for
Döngü ve forEach
yöntem arasındaki en önemli fark , birincisi ile break
döngüden çıkabilmenizdir. Simülasyonunu continue
, sadece geçilen işlevden dönerek yapabilirsiniz forEach
, ancak döngüyü tamamen durdurmanın bir yolu yoktur.
Bunun yanı sıra, ikisi etkili bir şekilde aynı işlevselliği gerçekleştirir. Diğer bir küçük fark, değişken kaldırma nedeniyle for döngüsündeki dizinin kapsamını (ve tüm içeren değişkenleri) içerir.
for (var i = 0; i < arr.length; i++) { ... }
arr.forEach(function (el, i) { ... });
Bununla birlikte, bunu forEach
çok daha anlamlı buluyorum - bir dizinin her bir öğesi boyunca yineleme yapma niyetinizi temsil ediyor ve size yalnızca dizine değil öğeye de bir referans sağlıyor. Genel olarak, çoğunlukla kişisel zevkinize bağlı, ancak kullanabiliyorsanız forEach
, kullanmanızı tavsiye ederim.
İki versiyon arasında, özellikle performansla ilgili birkaç önemli fark daha var. Aslında, bu jsperf testininforEach
gösterdiği gibi basit for döngüsü yöntemden önemli ölçüde daha iyi performans gösterir .
Böyle bir performansın sizin için gerekli olup olmadığına karar vermek size bağlıdır ve çoğu durumda, ifade gücünün hıza göre olmasını tercih ederim. Bu hız farkı, muhtemelen bu yanıtta belirtildiği gibi seyrek dizilerde çalışırken temel döngü ile yöntem arasındaki küçük anlamsal farklılıklardan kaynaklanmaktadır .
Davranışına ihtiyacınız yoksa forEach
ve / veya döngüden erken çıkmanız gerekiyorsa, Lo-Dash'i _.each
alternatif olarak kullanabilirsiniz , bu da tarayıcılar arası çalışacaktır. JQuery kullanıyorsanız, aynı zamanda bir benzer sağlar $.each
, her varyasyonda geri arama işlevine iletilen bağımsız değişkenlerdeki farklılıkları not edin.
( forEach
Polyfill'e gelince , bu rotaya gitmeyi seçerseniz, eski tarayıcılarda sorunsuz çalışmalıdır.)
break
dışınaforEach
. Ancak büyük bir avantaj, işlevle yeni bir kapsam oluşturmaktır. Polyfill ile herhangi bir problem yaşamazsınız (en azından ben hiç karşılaşmadım).