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

  • ASUS

    ASUS

    22 EKİM 2005
  • buttheadgsxr1000

    buttheadgsxr

    24 Ocak 2008
  • TechnoBuffalo

    TechnoBuffal

    8 HAZİRAN 2007