Var, Let, dan Const
Sebagai orang yang belajar dari artikel-artikel yang bersebaran di internet, tidak jarang saya menjumpai perbedaan cara menulis kode. Salah satu yang cukup sering saya temui adalah pendeklarasian variabel di javascript.
Dulu, saat mendeklarasikan variabel di javascript cukup menggunakan var
, sekarang sering saya temui menggunakan let
dan juga const
, lalu apa bedanya ?
Sejak ES6 ( apapula ini ) javascript menambahkan dua cara untuk mendeklarasikan variabel yaitu let
dan const
, jadi dua “makhluk” ini emang baru walaupun tidak baru-baru amat.
var
: Pendeklarasian variabel yang dapat diubah ( reassign ) isinya, bersifat function-scoped.
function tesvar(x) { if(x > 1) { var hello = 'hello' } console.log(hello) } tesvar(2)
Skrip di atas akan mengeluarkan log “hello” walaupun variabel hello
berada dalam blok if
, variabel tersebut masih bisa diakses.
let
: Mirip dengan var
nilainya dapat diubah kembali (reassign), namun bersifat block-scoped.
function teslet(x) { if(x > 1) { let hello = "test" hello = 'hello' console.log(hello) } console.log(hello) } testlet(2)
fungsi console.log
yang pertama akan mengeluarkan “hello”, sedangkan pada fungsi console.log
yang kedua akan mengeluarkan pesan error : Uncaught ReferenceError: hello is not defined.
Pesan itu muncul karena variabel hello
hanya ada di blok if
.
const
: Hampir mirip dengan const
bersifat block-scoped, bedanya const
nilainya tidak dapat diubah.
function tesconst(x){ if(x > 1) { const hello = "hello" console.log(hello) } console.log(hello) } tesconst(2)
fungsi console.log
yang pertama akan mengeluarkan “hello”, sedangkan pada fungsi console.log
yang kedua akan mengeluarkan pesan error : Uncaught ReferenceError: hello is not defined. Sekarang coba skenario kedua, saya ubah nilai hello
function tesconst(x){ if(x > 1) { const hello = "hello" hello = "ubah" console.log(hello) } console.log(hello) } tesconst(2)
Fungsi di atas akan langsung menampilkan pesan error : Uncaught TypeError: Assignment to constant variable.
Di atas disinggung kata ES6, makhluk apaan lagi ini ? Bagi yang hendak belajar javascript nampaknya perlu mengetahui terkait ES6. Nantilah kalau setelah baca-baca dan ada yang bisa saya share sejauh mana saya mengerti saya tulis lagi.
Referensi : http://exploringjs.com/es6/ch_variables.html