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
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 var
s 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 var
ler, 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)
İçinde değişkenleri bildirmek veya bir...
Deneyin...yakalamak veya bir döngü içi...
Bir döngü içinde nesne harfleri bir di...
Objective-C switch deyimi içinde değiş...
Ya da bir döngü içinde ve dışında bir ...