Sama sekali tidak ada perbedaan dalam arti atau kinerja, dalam JavaScript atau ActionScript.
var
adalah arahan untuk parser, dan bukan perintah yang dijalankan saat run-time. Jika pengidentifikasi tertentu telah dideklarasikan var
sekali atau lebih di mana saja di badan fungsi (*), maka semua penggunaan pengenal itu di blok akan merujuk ke variabel lokal. Tidak ada bedanya apakah value
dinyatakan 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 var
di 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 var
dan 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 var
sama 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)