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
İ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)
Neden görünümünde hazırda açık oturum ...
Neden &; ad std quot;" kötü olara...
Neden belgedir.yazma " kabul;kötü ...
Neden Bahar'In ApplicationContext...
Hangi bölümleri Real World Haskell şim...