Nie ma absolutnie żadnej różnicy w znaczeniu lub wydajności w JavaScript lub ActionScript.
varjest dyrektywą dla parsera, a nie komendą wykonywaną w czasie wykonywania. Jeśli określony identyfikator został zadeklarowany varraz lub więcej w dowolnym miejscu w treści funkcji (*), wówczas wszelkie użycie tego identyfikatora w bloku będzie odnosić się do zmiennej lokalnej. Nie ma znaczenia, czy valuedeklaruje się, że varznajduje się w pętli, poza nią, czy w obu.
W związku z tym powinieneś napisać, co uznasz za najbardziej czytelne. Nie zgadzam się z Crockfordem, że umieszczenie wszystkich zmiennych na szczycie funkcji jest zawsze najlepszą rzeczą. W przypadku, gdy zmienna jest używana tymczasowo w sekcji kodu, lepiej zadeklarować varw tej sekcji, aby sekcja była samodzielna i można ją było wkleić. W przeciwnym razie skopiuj i wklej kilka wierszy kodu do nowej funkcji podczas refaktoryzacji, bez osobnego wybierania i przenoszenia powiązanych var, a otrzymasz przypadkowe globalne.
W szczególności:
for (var i; i<100; i++)
do something;
for (var i; i<100; i++)
do something else;
Crockford zaleci usunięcie drugiego var(lub usuń oba vars i wykonaj var i;powyższe), a jslint będzie cię za to płakał. Ale IMO jest łatwiejsze w utrzymaniu, zachowując oba varpowiązane kody, zamiast mieć dodatkowy, łatwo zapominany kawałek kodu na górze funkcji.
Osobiście staram się zadeklarować jako varpierwsze przypisanie zmiennej w niezależnej sekcji kodu, niezależnie od tego, czy istnieje inne oddzielne użycie tej samej nazwy zmiennej w innej części tej samej funkcji. Dla mnie konieczność deklarowania varw ogóle jest niepożądaną brodawką JS (byłoby lepiej, gdyby zmienne były domyślnie lokalne); Nie uważam za swój obowiązek powielać ograniczeń [starej wersji] ANSI C również w JavaScript.
(*: inne niż w zagnieżdżonych obiektach funkcyjnych)