Apa Perbedaan Const, Let dan Var dalam Deklarasi Variabel pada Javascript?
JavascriptSejak release ES6, dikenal let dan const sebagai keyword untuk mendeklarasikan variabel di javascript. Lalu apa perbedaan dari Const, Let dan Var? Kapan waktu terbaik kita menggunakan mereka?
Tiga kata keyword ini memiliki pendekatan berbeda untuk Assignment, Hoisting dan Scope - jadi kita akan membahas masing-masing secara terpisah.
i) Assignment
Perbedaan yang paling mendasar adalah bahwa let dan var dapat ubah isinya kembali sementara const tidak bisa. Ini menjadikan const pilihan terbaik untuk variabel yang tidak perlu diubah, dan itu akan mencegah kesalahan seperti merubah data yang tidak disengaja.
Tetapi bukan berarti const sama sekali tidak bisa diubah isinya, dalam beberapa case di array atau objek kita bisa merubah isi dari const.
Untuk let dan var dapat diubah isinya, tetapi - karena poin-poin berikut harus menjelaskan - let memiliki keunggulan signifikan dibandingkan var, menjadikannya pilihan yang lebih baik di sebagian besar, jika tidak semua keadaan di mana variabel perlu diubah.
ii) Hoisting
Variabel yang dideklarasikan menggunakan var selalu dinaikkan ke bagian atas ruang lingkup masing-masing, sedangkan variabel yang dideklarasikan menggunakan const dan biarkan tidak dinaikkan. Dengan demikian, var bisa lebih rentan terhadap kesalahan, seperti penugasan kembali (diubah isinya) yang tidak disengaja. Ambil contoh berikut:
var x = "global scope";
function foo() {
var x = "functional scope";
console.log(x);
}
foo(); // "functional scope"
console.log(x); // "global scope"
Di sini, hasil foo() dan console.log(x) adalah seperti yang kita harapkan. Tetapi bagaimana jika kita menjatuhkan var kedua?
var x = "global scope";
function foo() {
x = "functional scope";
console.log(x);
}
foo(); // "functional scope"
console.log(x); // "functional scope"
Meskipun didefinisikan dalam suatu fungsi, x = "functional scope" telah menimpa variabel global. Kita perlu mengulangi kata kunci var untuk menentukan bahwa variabel kedua x hanya mencakup untuk foo().
iii) Scope
Sementara var adalah function-scoped, let dan const adalah block-scoped: secara umum, blok adalah kode apa pun dalam kurung kurawal {}, termasuk fungsi, pernyataan kondisional, dan loop. Untuk mengilustrasikan perbedaannya, lihat kode berikut:
var a = 0;
let b = 0;
const c = 0;
if (true) {
var a = 1;
let b = 1;
const c = 1;
}
console.log(a); // 1
console.log(b); // 0
console.log(c); // 0
Di dalam blok kondisional diatas, var a yang dicakup secara global telah didefinisikan ulang, tetapi let b dan const c yang tercakup secara global belum. Secara umum, memastikan tugas lokal tetap lokal akan membuat kode lebih bersih dan lebih sedikit kesalahan.
Dengan memahami jenis variabel akan membantu kita lebih tepat dalam memilih sesuai dengan kebutuhan. Semoga bermanfaat