Javascript: let vs. var
Di javascript, deklarasi variable ada tiga macam cara, dengan var
, let
atau const
. var
dan let
bisa dibilang mirip, variable yang dideklarasikan sifatnya bisa diganti (mutable). Sedangkan const
tidak bisa diganti (imutable).
Lalu kok bisa ada var
, tetapi ada juga let
?
let
sebetulnya adalah successor dari var
. Memakai let
kode kita akan lebih terhindar dari bug.
seperti apa? Mari kita bahas.
let variableA = 10;
var variableB = 11;
function printVariables() {
console.log(variableA);
console.log(variableB);
}
printVariables();
Maka hasilnya akan:
10
11
Artinya variableA
dan variableB
keduanya visible dengan scope dari function printVariables
. Mari kita ubah sedikit;
if (true) {
let variableA = 10;
var variableB = 11;
}
function printVariableA() {
console.log(variableA);
}
function printVariableB() {
console.log(variableB);
}
Jika kita panggil printVariableA()
, javascript akan throw error:
Uncaught ReferenceError: variableA is not defined at printVariableA (:7:15) at :1:1
Tetapi jika kita panggil printVariableB()
, tidak akan error. Dan justru akan print value dari variableB
.
11
Itulah perbedaan scope antara var
dan let
. Scope var
hanya berlaku di dalam function
saja, sedangkan let
tidak hanya function
, tetapi ada juga di dalam if
, dan loop.