Saya telah menulis banyak kode ES6 untuk io.js baru-baru ini. Tidak ada banyak kode di alam liar untuk dipelajari, jadi saya merasa seperti saya mendefinisikan konvensi saya sendiri ketika saya pergi.
Pertanyaan saya adalah tentang kapan harus menggunakan const
vs let
.
Saya telah menerapkan aturan ini: Jika memungkinkan, gunakan const
. Hanya gunakan let
jika Anda tahu nilainya perlu diubah. (Anda selalu dapat kembali dan mengubah const
ke let
jika nanti ternyata Anda perlu mengubah nilainya.)
Alasan utama aturan ini adalah mudah untuk diterapkan secara konsisten. Tidak ada area abu-abu.
Masalahnya adalah, ketika saya menerapkan aturan ini, dalam praktiknya 95% dari deklarasi saya adalah const
. Dan ini terlihat aneh bagiku. Saya hanya menggunakan let
untuk hal-hal seperti i
dalam satu for
lingkaran, atau kadang-kadang untuk hal-hal seperti akumulasi total Fibonacci (yang tidak banyak muncul dalam kehidupan nyata). Saya terkejut dengan ini - ternyata 95% dari 'variabel' dalam kode ES5 saya saat ini adalah untuk nilai-nilai yang tidak bervariasi. Tetapi melihat const
seluruh kode saya terasa salah.
Jadi pertanyaan saya adalah: apakah boleh menggunakan const
sebanyak ini? Haruskah saya benar-benar melakukan hal-hal seperti const foo = function () {...};
?
Atau haruskah saya memesan const
untuk situasi-situasi di mana Anda membuat kode literal di bagian atas modul - seperti yang Anda lakukan dengan huruf besar, seperti const MARGIN_WIDTH = 410;
?
function foo() {...}
lebih baik dari<anything> foo = function() {...}
function foo() {...}
dapat menyebabkan kebingungan kecil saat debugging, karena mengangkat. Juga, keberadaannya berarti kita memiliki dua konstruksi yang melakukan hal yang sama tetapi salah satunya hanya bekerja dalam konteks yang sangat spesifik. (Anda bisa menggunakan ekspresi fungsi di mana pun ekspresi bisa ada, tetapi Anda hanya bisa menggunakan deklarasi fungsi di level pernyataan.) Jika Anda menyukai singkatnya, masalahnya mungkin saja sintaks ekspresi fungsi menggunakan seluruh kata function
.
const
sebanyak ini.