JavaScript veya ActionScript'te anlam veya performans açısından kesinlikle hiçbir fark yoktur .
varayrıştırıcı için bir direktiftir ve çalışma zamanında yürütülen bir komut değildir . Belirli bir tanımlayıcı varbir işlev gövdesinde (*) bir veya daha fazla herhangi bir yerde bildirilmişse , bu tanımlayıcının bloktaki tüm kullanımı yerel değişkene atıfta bulunacaktır. Döngünün içinde, döngünün dışında veya her ikisinin birden valuebildirildiği fark etmez var.
Sonuç olarak en okunaklı bulduğunuz şeyi yazmalısınız. Crockford ile tüm değişkenleri bir işlevin üstüne koymanın her zaman en iyi şey olduğunu kabul etmiyorum. Bir değişkenin bir kod bölümünde geçici olarak kullanıldığı durumda var, bu bölümde bildirmek daha iyidir , bu nedenle bölüm tek başına kalır ve kopyalanabilir. Aksi takdirde, birkaç kod satırını yeniden ilişkilendirme sırasında ilişkili olanı ayrı olarak seçip taşımadan yeni bir işleve kopyalayıp yapıştırın varve kendinize yanlışlıkla bir global var.
Özellikle:
for (var i; i<100; i++)
do something;
for (var i; i<100; i++)
do something else;
Crockford ikinciyi varkaldırmanızı (ya da her ikisini de kaldırmanızı varve var i;yukarıdaki işlemleri yapmanızı ) tavsiye eder ve jslint bunun için size sızlanır. Ancak IMO var, işlevin üstünde ekstra, kolayca unutulan bir kod parçasına sahip olmak yerine, her iki s'yi de tutmak, ilgili tüm kodu bir arada tutmak daha sürdürülebilir .
Şahsen ben var, aynı fonksiyonun başka bir bölümünde aynı değişken adının başka bir ayrı kullanımı olsun veya olmasın, bağımsız bir kod bölümünde bir değişkenin ilk ataması olarak beyan etme eğilimindeyim . Benim için hiç beyan etmek varistenmeyen bir JS siğilidir (değişkenlerin yerel olarak varsayılana sahip olması daha iyi olurdu); JavaScript'te de [eski bir düzeltme] ANSI C'nin sınırlamalarını çoğaltmak benim görevim olarak görmüyorum.
(*: iç içe fonksiyon gövdeleri dışında)