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 constnilainya 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