SORU
15 ŞUBAT 2010, PAZARTESİ


Neden 'diziler JavaScript kötü uygulama olarak kabul' (listede var kalem)?

Basit bir sıfır tabanlı verilen sayısal endeksli dizi:

var list = ['Foo', 'Bar', 'Baz'];

Birçok kez, birisi böyle bir dizi değişkenleri döngü önerdiğinde fark ettim:

for(var item in list) { ... }

...hemen hemen hiç biri o kadar da kötü bişey ima var ve alternatif bir yaklaşım öneriyor:

var count = list.length;

for(var i = 0; i < count; i  ) {
    var item = list[i];
    ...
}

Yukarıda basit bir sürümünü kullanıyorsanız ve ikinci örnek yerine kullanmak için değil sebebi ne?

CEVAP
15 ŞUBAT 2010, PAZARTESİ


İlk olarak, döngü sırasını özelliklerini istediğiniz sırayla tekrarlanır olacak garantisi yok yani for...in bir döngü için tanımlanmamış.

İkinci olarak, for...in tüm adımlar bir nesne, bu onun prototip miras da dahil olmak üzere sayısız özellikleri. Diziler halinde, eğer bu kod veya herhangi bir kütüphane sayfasında yer yapmak için gerçekten yararlı bir şey olabilir Array: prototip artırılmış varsa sizi etkileyebilir

Array.prototype.remove = function(val) {
    // Irrelevant implementation details
};

var a = ["a", "b", "c"];

for (var i in a) {
    console.log(i);
}

// Logs 0, 1, 2, "remove" (though not necessarily in that order)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GenTechPC

    GenTechPC

    1 Temmuz 2007
  • ImBluecams

    ImBluecams

    25 Kasım 2012
  • Jonah Penna

    Jonah Penna

    11 EYLÜL 2005