Panduan Babel untuk ES6 mengatakan:
let
adalah yang baruvar
.
Rupanya satu-satunya perbedaan adalah yang var
dicakup untuk fungsi saat ini , sementara let
dicakup untuk blok saat ini . Ada beberapa contoh bagus dalam jawaban ini .
Saya tidak dapat melihat alasan untuk menggunakan var
kode ES6. Bahkan jika Anda ingin membuat lingkup variabel tertentu ke seluruh fungsi, Anda bisa melakukannya dengan let
meletakkan deklarasi di bagian atas blok fungsi, yang adalah apa yang harus Anda lakukan dengan var
menunjukkan lingkup sebenarnya. Dan jika Anda ingin lingkup sesuatu yang lebih halus di for
blok atau sesuatu, maka Anda bisa melakukannya juga.
Jadi insting saya adalah berhenti menggunakan var
sama sekali saat menulis kode ES6.
Pertanyaan saya adalah, apakah saya salah tentang ini? Apakah ada kasus yang sah di mana var
lebih disukai daripada let
?
let
pernyataan tepat di bagian atas fungsi, saya pikir itu sama jelasnya bahwa Anda bermaksud untuk lingkup itu ke seluruh fungsi. Saya tidak berpikir menggunakan var
membuatnya lebih jelas daripada hanya menempatkannya di atas.
var
masih ada, adalah kompatibilitas ke belakang. Jika bukan karena itu, mereka akan menghapus var
semuanya, atau tidak pernah diperkenalkan let
di tempat pertama, alih-alih mengubah semantik dari var
apa yang seharusnya sudah ada sejak lama.
var
tampaknya tipis bagi saya, dan tidak cukup untuk menjamin memiliki jenis variabel ketiga yang melompat-lompat. Anda dapat let
menetapkan cakupan ke seluruh fungsi hanya dengan menempatkannya di bagian atas fungsi, yang maksudnya jauh lebih jelas daripada menulis var
di blok (untuk membuatnya diangkat keluar dari blok itu sehingga Anda dapat menggunakannya di luar blok) - aneh). Dia memperingatkan bahwa jika Anda let
menetapkan suatu fungsi maka "itu hanya posisi yang menandakan perbedaan, daripada sintaksis", tapi saya pikir itu hal yang baik.
var
. contoh-contoh yang ia tampilkan untuk dijaga var
tampaknya dibuat-buat - dan didasarkan pada kesalahan pengkodean yang parah . Jauh lebih baik untuk mengalami kesalahan dan dipaksa untuk memperbaiki kesalahan seperti itu daripada menggunakan fungsi bahasa yang membuat orang bisa melakukannya! Apa selanjutnya, menyarankan untuk membungkus semuanya dalam mencoba / menangkap untuk mencegah crash? Sisa dari tautan itu bagus tapi saya tidak setuju sama sekali dengan bagian tertentu itu.
var
sebagai indikator sadar bahwa variabel ini dimaksudkan untuk mencakup seluruh fungsi mungkin menjadi konvensi "mendokumentasikan diri" yang berguna .