Coba inget pas SD diajarin matematika: "x = 5". x adalah label, 5 adalah isi yang nempel di label itu. Variabel di JavaScript persis sama — kotak penyimpanan dengan nama, kamu bisa taro nilai apapun di dalamnya, terus akses lagi nanti pake namanya. Tanpa variabel, kode kamu cuma sekumpulan angka random tanpa makna. Dengan variabel, data jadi punya identitas dan bisa di-reuse.
🤔 Tiga cara, satu juara. JavaScript punya
var(lawas, dihindari),let(modern, bisa diubah), danconst(modern, tetap). Aturan praktis di codebase modern: default pakeconst, ganti keletkalau memang perlu reassign.var? Anggep aja gak ada — peninggalan masa lalu yang masih kompatibel tapi lebih ribet.
Di JavaScript, ada tiga cara mendeklarasikan variabel:
let— bisa diubah nilainyaconst— tidak bisa diubah nilainya (konstan)var— cara lama (hindari jika bisa)
let nama = "Budi"
const umur = 17
Gunakan const untuk nilai yang tidak berubah dan let untuk nilai yang bisa berubah.
Reassignment — mengubah nilai variabel
Variabel let bisa ditimpa dengan nilai baru:
let skor = 0
skor = 100 // sekarang skor bernilai 100
Kalau pakai const, error:
const pi = 3.14
pi = 3.15 // TypeError: Assignment to constant variable
Tukar nilai (swap) dengan variabel bantu
Untuk menukar nilai dua variabel, kamu butuh variabel ketiga sebagai penyimpan sementara:
let a = 5
let b = 10
let temp = a // simpan nilai a dulu
a = b // a sekarang 10
b = temp // b sekarang 5 (nilai a lama)
Tanpa temp, nilai a yang lama akan hilang saat ditimpa oleh b.
const. Pakai let hanya kalau benar-benar perlu reassign.🎭 Analogi sehari-hari
Variabel = kotak penyimpanan dengan label nama:
let= kotak biasa — isinya bisa diganti kapan saja.const= kotak yang sudah dilas tutup — label tetap, isi tidak bisa diganti.
Mau swap dua kotak? Tidak bisa langsung tuang — butuh kotak ketiga (temp) buat menampung sementara, sama seperti tukar isi gelas A dan B butuh gelas kosong dulu.
⚠️ Jebakan yang sering ditemui
varmasih jalan tapi jangan dipakai — punya function scope yang aneh, sering bocor ke luar block.constmelindungi LABEL, bukan isi.const arr = [1,2]; arr.push(3);boleh — yang dilarangarr = [4,5].- Lupa deklarasi = global pollution diam-diam.
x = 5(tanpalet) bikin global var, susah debug. Aktifkan"use strict"atau pakai module untuk error. - Hoisting
varbikin variabel "ada" sebelum dideklarasi (nilai undefined).let/constlempar ReferenceError — lebih aman.
🧪 Tebakan cepat — hoisting drama. Tanpa run, tebak output tiap baris:
// BLOK A console.log(a); var a = 5; // BLOK B console.log(b); let b = 5; // BLOK C console.log(typeof c);Jawaban:
- A →
undefined(var di-hoist + diisiundefined, bukan error)- B →
ReferenceError(let di-hoist tapi DI-LARANG akses sampai baris deklarasi — Temporal Dead Zone)- C →
"undefined"(variable yang gak pernah dideklarasi sama sekali — tapitypeofaman, gak lempar error)Pelajaran:
varpermissive (sering tutup bug).let/conststrict (paksa kamu inisialisasi sebelum pakai). Selalu pakailet/const.
TL;DR: Variabel = kotak data berlabel. Default pakai const (gak bisa reassign), pakai let cuma kalau perlu reassign. HINDARI var (lawas, function scope aneh). const melindungi LABEL, bukan isi — const arr = [1]; arr.push(2) boleh, arr = [3] error. Swap nilai butuh variabel temp ketiga. Lupa let/const = global pollution diam-diam.