Sama sekali tidak ada perbedaan dalam arti atau kinerja, dalam JavaScript atau ActionScript.
varadalah arahan untuk parser, dan bukan perintah yang dijalankan saat run-time. Jika pengidentifikasi tertentu telah dideklarasikan varsekali atau lebih di mana saja di badan fungsi (*), maka semua penggunaan pengenal itu di blok akan merujuk ke variabel lokal. Tidak ada bedanya apakah valuedinyatakan demikianvar di dalam loop, di luar loop, atau keduanya.
Karenanya, Anda harus menulis yang menurut Anda paling mudah dibaca. Saya tidak setuju dengan Crockford bahwa menempatkan semua vars di atas fungsi selalu merupakan hal terbaik. Untuk kasus di mana variabel digunakan sementara di bagian kode, lebih baik untuk mendeklarasikan vardi bagian itu, sehingga bagian itu berdiri sendiri dan dapat disalin-tempel. Jika tidak, salin-tempel beberapa baris kode ke fungsi baru selama refactoring, tanpa secara terpisah memilih dan memindahkan yang terkaitvar , dan Anda mendapatkan global yang tidak disengaja.
Khususnya:
for (var i; i<100; i++)
do something;
for (var i; i<100; i++)
do something else;
Crockford akan merekomendasikan Anda menghapus yang kedua var (atau menghapus keduanya vardan lakukan di var i;atas), dan jslint akan memukul Anda untuk ini. Tapi IMO lebih mudah dikelola untuk menjaga keduanya var, menjaga semua kode terkait, daripada memiliki sedikit tambahan, kode yang mudah dilupakan di bagian atas fungsi.
Secara pribadi saya cenderung menyatakan sebagai var penugasan pertama dari suatu variabel dalam bagian kode yang independen, terlepas dari apakah ada penggunaan terpisah dari nama variabel yang sama di beberapa bagian lain dari fungsi yang sama. Bagi saya, harus menyatakan varsama sekali adalah JS wart yang tidak diinginkan (akan lebih baik jika memiliki variabel default ke lokal); Saya tidak melihatnya sebagai tugas saya untuk menduplikasi keterbatasan [revisi lama] ANSI C di JavaScript juga.
(*: selain dari pada fungsi yang bersarang)