SORU
10 EYLÜL 2010, Cuma


Değişkenleri ya da döngü içinde ve dışında ilan JavaScript?

AS3 arttırılmış performans için döngüler dışındaki tüm değişkenleri yeniden gerektiğine inanıyorum. Bu JavaScript ile de durum böyle mi? Hangisi daha iyi / daha hızlı, en iyi uygulama/?

var value = 0;

for (var i = 0; i < 100; i  )
{
    value = somearray[i];
}

ya

for (var i = 0 ; i < 100; i  )
{
    var value = somearray[i];
}

CEVAP
10 EYLÜL 2010, Cuma


Varkesinlikle hiçbir fark yokJavaScript olayın anlam ya da performans.

var çözümleyici için bir emir olduğunu, vedeğilbir komut çalıştırma sırasında yürütülen. Eğer belirli bir tanımlayıcı var ya da herhangi bir vücut fonksiyonu (*) bir kez daha ilan edildi, sonra blok tanımlayıcı kullanmak yerel değişken için referans olacaktır. value var döngü içinde döngü dışında, ya da her ikisi de ilan olup olmadığını hiç fark etmez.

Sonuç olarak en okunabilir hangi bulmak yazmalısın. Bir işlevin üstünde tüm değişkenleri koymak her zaman en iyi şey olduğunu Crockford katılmıyorum. Kod bölümünde bir değişken geçici olarak kullanıldığı durumda, daha iyi bir bölümü tek başına duruyor ve kopya yapıştırılmış olabilir, böylece Bölüm var bildirmek. Aksi takdirde, kopyala-yapıştır ayrı toplama ve ilişkili var, hareket etmeden yeniden düzenleme sırasında yeni bir işlev için kod birkaç satır, ve kendini bir kaza sonucu küresel var.

Özellikle:

for (var i; i<100; i  )
    do something;

for (var i; i<100; i  )
    do something else;

Crockford sana ikinci var (ya da vars var i; yukarıdaki kaldırmak) kaldırmak tavsiye eder, ve jslint bunun için de sızlanmaya. Ama IMO daha sürdürülebilir işlevin üstünde varler, birlikte ilgili kodu, fazladan sahip tutmak yerine, kolayca unutulmuş her iki kod bit tutmak için.

Şahsen ben eğilimi belirttiği gibi var ilk atama bir değişken bir bağımsız bölümün kodu, olsun ya da olmasın başka ayrı kullanım aynı değişken adı başka bir bölümü aynı işlevi. Benim için, olması için ilan var hiç bir istenmeyen JS siğil (olması daha iyi gerek değişkenleri Varsayılan yerel); düşünmüyorum görevimi yinelenen sınırlamaları [eski revizyon] ANSI C JavaScript de.

(*: iç içe fonksiyon organları dışında)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kontor.TV

    Kontor.TV

    14 Mart 2006
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007
  • bored before i even began

    bored before

    30 Mart 2009